Убеждаемся,что стоит не Bundled версия GD:
php -i | grep gd -i
/etc/php5/cli/conf.d/gd.ini,
ffmpeg-php gd support => enabled
gd
GD Support => enabled
GD Version => 2.0 or higher
Предварительно рекомендую обновить систему, чтобы поставить актуальную версию PHP:
apt-get update;
apt-get -y upgrade;
cd /usr/src
apt-get install -y dpkg-dev devscripts build-essential fakeroot
apt-get source libapache2-mod-php5
apt-get build-dep -y libapache2-mod-php5
cd php5-5.2.6.dfsg.1
Теперь вносим коррективы (переключаемся с внешнего gd на внутренний):
sed -i 's/-with-gd=shared,\/usr/-with-gd=shared/' debian/rules
Собираем:
debuild -us -uc # -us unsigned source, -uc unsigned changes
# если же требуется на 64 битной архитектуре собирать 32 битный пакет, то команда будет иной:
# debuild -us -uc -ai386
Ставим обновленный gd (32 бита):
cd ..
dpkg -i php5-gd_5.2.6.dfsg.1-1+lenny9_i386.deb
Или так (64 бита):
cd ..
dpkg -i php5-gd_5.2.6.dfsg.1-1+lenny9_amd64.deb
Рестартим Апача:
/etc/init.d/apache2 restart
Убеждаемся, что встала Bundled сборка GD:
php -i | grep gd -i
/etc/php5/cli/conf.d/gd.ini,
ffmpeg-php gd support => enabled
gd
GD Support => enabled
GD Version => bundled (2.0.34 compatible)
Тестим работу:
php -r "imagerotate();"
и еще вторую функцию:
php -r "imageconvolution();"
Блокируем обновление php5-gd, чтобы более новая версия не заменила нашу:
echo "php5-gd hold" | dpkg --set-selections
Кому требуется "легкий путь", вот уже собранная под 32 и 64 битный Debian версия:
apt-get update; apt-get upgrade
cd /usr/src
32 бита:
wget http://fastvps.googlecode.com/files/php5-gd_5.2.6.dfsg.1-1%2Blenny8_i386.deb
dpkg -i php5-gd_5.2.6.dfsg.1-1+lenny8_i386.deb
64 бита:
wget http://fastvps.googlecode.com/files/php5-gd_5.2.6.dfsg.1-1%2Blenny8_amd64.deb
dpkg -i php5-gd_5.2.6.dfsg.1-1+lenny8_amd64.deb
echo "php5-gd hold" | dpkg --set-selections
/etc/init.d/apache2 restart
основано на: http://digitalconsumption.com/forum/622-PHP-imagerotate-on-Debian и http://cumu.li/2008/5/13/recompiling-php5-with-bundled-support-for-gd-on-ubuntu
Здравствуйте!
ReplyDeleteпосле команды
apt-get build-dep libapache2-mod-php5
получаю
"Заметьте, вместо libc-client-dev выбирается libc-client2007b-dev
E: Зависимости для сборки php5 не могут быть удовлетворены."
Как это можно исправить?
Странно, такое может быть лишь, если какой-то косяк с репозиториями. Покажите выдачу команды: cat /etc/debian_version (в отвел должна быть 5.0.* версия), а также cat /etc/apt/sources.list
ReplyDeleteКосяк с Debian наверно. (
ReplyDeletecat /etc/debian_version
squeeze/sid
cat /etc/apt/sources.list
deb ftp://mirror.hetzner.de/debian/packages lenny main contrib non-free
deb ftp://mirror.hetzner.de/debian/security lenny/updates main contrib non-free
deb http://ftp.de.debian.org/debian lenny main non-free contrib
deb-src http://ftp.de.debian.org/debian lenny main non-free contrib
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free
В общем, полгода назад вручную обновлялись MySQL и nginx, подключались другие репозитории. Похоже оттуда такая солянка.
ReplyDeleteМожно это как-нибудь восстановить.
Покажите: dpkg -l | grep php -i
ReplyDeletedpkg -l | grep php -i
ReplyDeleteii libapache2-mod-php5 5.2.6.dfsg.1-1+lenny9 server-side, HTML-embedded scripting language (Apache 2 module
ii php5 5.2.6.dfsg.1-1+lenny9 server-side, HTML-embedded scripting language (metapackage)
ii php5-cgi 5.2.6.dfsg.1-1+lenny9 server-side, HTML-embedded scripting language (CGI binary)
ii php5-cli 5.2.6.dfsg.1-1+lenny9 command-line interpreter for the php5 scripting language
ii php5-common 5.2.6.dfsg.1-1+lenny9 Common files for packages built from the php5 source
ii php5-curl 5.2.6.dfsg.1-1+lenny9 CURL module for php5
ii php5-gd 5.2.6.dfsg.1-1+lenny9 GD module for php5
ii php5-mcrypt 5.2.6.dfsg.1-1+lenny9 MCrypt module for php5
ii php5-mysql 5.2.6.dfsg.1-1+lenny9 MySQL module for php5
ii phpmyadmin 4:2.11.8.1-5+lenny4 MySQL web administration tool
Вот еще, вдруг пригодится:
lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 5.0.5 (lenny)
Release: 5.0.5
Codename: lenny
Угу, вижу почему. Система обновлена до sid/squeeze, а репозитории подцеплены от lenny, разумеется, там нету исходников пакетов от squeeze. Так что вариант собрать один - менять поочередно в /etc/apt/sources.list lenny на squeeze, обновляться и смотреть, как все будет работать дальше. Но обновляться в такой ситуации я бы рекомендовал с максимальной осторожностью, все может упасть.
ReplyDeleteНе хватало еще уронить рабочий сервер ) перебьюсь.
ReplyDeleteСпасибо за помощь!
Ага, но вообще лучше так не делать было изначально, но если уж сделали, то лучше не трогать. Я как-то подобный апгерйд часов 5 фиксил ))
ReplyDelete