Problem leży po stronie biblioteki GD używanej w PHP. Oryginalna wersja tej biblioteki napisana jest w C (libgd), do PHP została tylko przeportowana. Ponieważ jest bardzo potrzebna w skryptach CMS-ów, to dodano do niej jeszcze kilka innych "dodatkowych" funkcji, które rozszerzają funkcjonalność biblioteki GD. Dodatkowe funkcje nie należą do oficjalnego źródła biblioteki libgd, z której korzysta pakiet php5-gd w systemie Debian Squeeze. Więcej szczegółów można znaleźć w dyskusji php5-gd: not using gd bundled with php5.
Rozwiązania są dwa, pierwszy polega na samodzielnej kompilacji PHP, opis tych czynności znajdziemy na poniższych stronach:
Making Apache use compiled PHP instead of bundled package on Debian
Tutorial: How to enable PHP5′s imageantialias on Ubuntu 10.10
GD package problems with Debian/Ubuntu: Document distro workarounds
Pamiętaj jednak, że będziesz musiał dokonywać tej kompilacji przy każdej aktualizacji. Poza tym, sama kompilacja może przysporzyć wiele problemów, o konieczności instalacji wszystkich bibliotek deweloperskich dla PHP5 nie wspomnę. Dlatego lepszym rozwiązaniem jest druga metoda.
Metodę tą można by żartobliwie nazwać "Dotdeb way". Dotdeb to repozytoria dla stabilnej wersji systemu Debian, ich zadaniem jest dostarczenie aktualnych paczek dla tzw. serwerów LAMP.
W tym przypadku interesuje nas paczka php5-gd, ale musimy zainstalować całe PHP. Oto przepis:
1. Do repozytoriów dodajemy wpisy:
# vim /etc/apt/sources.list
deb http://packages.dotdeb.org squeeze all
deb-src http://packages.dotdeb.org squeeze all
2. Dodajemy również klucz autoryzacyjny dla dotdeb:
# wget http://www.dotdeb.org/dotdeb.gpg
# cat dotdeb.gpg | apt-key add -
3. Teraz musimy uaktualnić spis dostępnych paczek o nowe repozytoria:
# aptitude update
4. Następnie usuniemy paczkę php5-gd:
# aptitude purge php5-gd
5. Ostateczne instalujemy tą samą paczkę, ale tym razem program wybierze tą nowszą wersję z dotdeb. Należy wybrać opcję, która zainstaluje tylko nowe GD, nie zgadzając się na rozwiązanie polegające na aktualizacji innych paczek takich jak MySQL:
# aptitude install php5-gd
To już koniec, posiadamy wersję PHP5 GD bundled, cały problem sprowadza się do tego jednego słówka :)
Pamiętaj również, że aktualizacja niektórych paczek (np. MySQL) obecnie jest wstrzymana, warto jakoś formalnie to gdzieś zapisać w konfiguracji, bo kiedyś może narobić problemów.
No comments:
Post a Comment