1

Полноценный модуль php5-gd для Debian и Ubuntu

По умолчанию PHP функции imageantialias() и imagerotate() отключены в модуле gd.so для Debian и его производных. Сделано это ради обеспечения стабильности и безопасности. Задумка может и благая, но раз мы ищем решение этой проблемы, значит оно того стоит. Например Drupal не захочет работать с урезанным модулем.

По сути достаточно пересобрать PHP и установить новый полноценный пакет php5-gd. Сделать это совсем не сложно, хотя описание будет достаточно подробное. Собирать будем из исходников, что само по себе интересно =)

Далее все действия производятся в рутовом терминале или в обычном через команду sudo. Для наглядности буду писать без sudo.

Для начала проверим, что включен нужный нам репозитарий в файле /etc/apt/sources.list. Нужно найти эту строчку и убедится, что она не закомментирована:

deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib

Устанавливаем необъходимый для любой сборки пакет и к нему в придачу остальные:

apt-get install build-essential

Переходим в папку сборки исходников и получаем нужные нам пакеты:

cd /usr/src
apt-get source php5-gd

По сути нам нужно собрать установочные пакеты с PHP5, но возьмём мы оттуда только модуль gd.so для замены.

Далее устанавливаем пакеты нужные для сборки php5-gd, их немало, но отступать уже поздно:

apt-get build-dep php5-gd

Теперь нужно изменить опцию сборки PHP5, которая нас так не устраивает. Переходим в папку с исходниками php5 (в зависимости от версии директория может называться иначе), открываем на редактирование файл с опциями сборки:

cd php5-5.2.6.dfsg.1
nano ./debian/rules

Находим (Ctrl + W) строку:

--with-gd=shared,/usr --enable-gd-native-ttf \

И заменяем её на нижеописанную, убрав «,/usr»:

--with-gd=shared --enable-gd-native-ttf \

Далее запускаем сборку пакета и идём пить чай с плюшками:

dpkg-buildpackage

Процесс завершается успешно и нам нужно переустановить расширение или заменить старый gd.so на новый (старый на всякий случай бекапим). Переустановить пакет можно так:

dpkg -i php5-gd_5.2.6.dfsg.1-1+lenny9_i686.deb

Имя пакета может отличаться в заисимости от версии системы и самих исходников.

Во втором варианте, чтобы быстро найти нужный нам файл, можно воспользоваться нехитрым но крайне полезным способом:

updatedb
locate gd.so

В моём случае активный (старый) модуль gd.so лежал в папке /usr/lib/php5/20060613/. А новый свежесобранный в папке /usr/src/php5-5.2.6.dfsg.1/debian/php5-gd/usr/lib/php5/20060613/. Заменяем старый файл на новый.

Ну и наконец-то перезагружаем сервер:

/etc/init.d/apache2 restart

Проверяем phpinfo() и удостоверяемся, что модуль GD примерно такой — bundled (2.0.34 compatible)

Файлы из каталога /usr/src/php5-5.2.6.dfsg.1/ можно удалить, а можно и оставить, на всякий случай.

Инструкции по теме: