Ну бывает!
Ну вот понадобилось на довольно свежей системе заиметь поддержку PHP4, да еще и гору модулей: PGSQL, MySQL, fileinfo, domxml и всякого разного. Среди прочего нужен был и GD... Да не просто GD, а с поддержкой FreeType2. Чтобы на картинках можно было рисовать с использованием TTF-шрифтов.
Прежде. Где вязть этого ископаемого дронта? Ну сам php4.
Ведь поскольку эта штука давно не поддерживается, то ни в дистрибутивах, ни в пакетах, ни в портах этого уже нет. Остается - php.net.
Находим там даунлоад, далее архивы и там есть ссылочка на тарболлы PHP4. Как и полагается, ссылочки ведут на скачивание с сайта muzeum.php.net. Уже довольно забавно.
Первая хреновая засада - скопмилировать это так, чтобы его понимал апач 2.4 Оно, конечно, собирается, но при старте апача ругается на undefined_symbol ap_unixd_config. Решается это дело путем правки файла sapi/apache2handler/php_functions.c
Правятся три места. Оригинальное имя структуры unixd_config заменяется на ap_unixd_config. Это деяние выполняется в двух строках. В третьем же добавляются три строчки:
Приведу конечный вид функции после правок
static char *php_apache_get_version()
{
// return (char *) ap_get_server_version();
#if MODULE_MAGIC_NUMBER_MAJOR >= 20060905
return (char *) ap_get_server_banner();
#else
return (char *) ap_get_server_version();
#endif
}
Вот.
После пересборки и инстала новый апач нормально общается с модулем libphp4.so
Модули (so-шки) расширений PHP после нескольких экспериментов с командой configure тоже все в сборе. Все запустилось и работает. Однако! Вторая засада. Функции GD по рисованию ТТФом на картинках отсутствует. Обращаемся к мировому разуму и видим, что будет оно рисовать, если собрать с библиотекой FreeType2, указав при конфигурировании опцию --with-freetype-dir=/usr/local (у вас оно может лежать необязательно тут)
Ок. сам пакет freetype2 установлен. дописываем в строчку с конфигуре вожделенный добавок. И.. получаем фигню вида:
configure: error: freetype2 not found!
Никакие манипуляции с заменой /usr/local на что-то еще не помогают.
Остается идти в сам ./configure и искать там упоминания про freetype. Там находим вот это:
if test -f "$i/include/freetype2/freetype/freetype.h"; then
Правим так?
if test -f "$i/include/freetype2/freetype.h"; then
make clean; ./configure со всеми требуемыми параметрами и в том числе не забываем --with-freetype-dir=/usr/local
make
make install
killall -HUP apache
И ископаемый дронт оживает и готов функционировать по полной программе.
Комментарии к статье (0)
|