Потребовалось тут установить php версии 4.3.5 на пятую Centos.
Думалось что задача тривиальная, но оказалось что не совсем.
Во первых - в репозиториях уже нет php4.3.5
Во вторых - так просто и сорсов он не компилился.
Вот об этом “во вторых” подробнее.
Сначала пришлось установить несколько devel пакетов.
В моем случае потребовались следующие:
#yum install gd-devel flex bison httpd-devel libjpeg-devel libpng-devel libxml2-devel libxslt-devel
Затем скачал с php.net нужную версию и приступил к компиляции ( компилировал модулем apache 2.2).
#./configure --with-apxs2=/usr/sbin/apxs --prefix=/usr/local/php --with-mysql --enable-mbstring --with-config-file-path=/usr/local/etc --enable-ftp --enable-libxml --with-dom-xslt --with-libxml-dir=/usr/local --enable-reflection --enable-force-cgi-redirect --enable-fastcgi --with-iconv --with-regex=php --disable-ipv6 --prefix=/usr --mandir=/usr/local/man --infodir=/usr/local/info/ --with-gd=/usr --with-dom --enable-gd-native-ttf=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-ttf --with-zlib-dir=/usr --disable-posix --enable-inline-optimization --without-pear --disable-debug
Конфигурация прошла без ошибок а вот make не пошел.
Первая ошибка при make :
sapi_apache2.c:38:25: error: apr_strings.h: No such file or directory
In file included from /home/src/php-4.3.5/sapi/apache2handler/sapi_apache2.c:39:
Лечится это симлинками :
# ln -s /usr/bin/apu-1-config /usr/bin/apu-config
# ln -s /usr/bin/apr-1-config /usr/bin/apr-config
Делаем make clean && make и оппа - вторая ошибка:
....
sapi_apache2.c:38:
/usr/include/apr-1/apr-i386.h:270: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘apr_off_t’
Это исправляется в два действия.
1. Выполняем следующее:
# apr-config –cppflags –cflags
На экран выведется примерно такое :
-DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -pthread
2. Копируем эту строку и вставляем ее в файл Makefile.global , в строку DEFS.
Должно получится примерно так:
DEFS = -DPHP_ATOM_INC -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -pthread -I$(top_builddir)/include -I$(top_builddir)/main -I$(top_srcdir)
Опять
# make clean && make && make install
и все. Должно работать