Как собрать собственный PHP как модуль Apache?
Иногда возникает необходимость собрать собственную версию PHP на хостинге. Например, в том случае, если в PHP должны быть подключены какие-либо библиотеки, не установленные централизованно на серверах хостинга.
На тарифах "Профессионал" и "ПрофессионалПлюс" есть доступ к конфигурационному файлу Apache httpd.conf. Поэтому в нем можно подключить собственную версию PHP.
Рассмотрим пример сборки PHP версии 4.4.7 с функциями для работы с MS SQL Server. Предварительно для этого нужно установить библиотеку FreeTDS (расширение для работы с MSSQL для Unix/Linux). Устанавливать все будем в директорию ~/local.
mkdir ~/local
mkdir ~/src
cd src
fetch ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar xzf freetds-stable.tgz
cd freetds-0.64/
./configure --prefix=${HOME}/local --enable-msdblib
make
make install
cd ..
fetch -o php-4.4.7.tar.gz \
http://ru2.php.net/get/php-4.4.7.tar.gz/from/this/mirror
tar xzf php-4.4.7.tar.gz
cd php-4.4.7/
./configure --prefix=${HOME}/local --enable-force-cgi-redirect \
--with-config-file-path=${HOME}/local --enable-dbase \
--with-jpeg-dir=/usr/local --enable-ftp --with-zlib --enable-versioning \
--with-pgsql=/usr/local/pgsql/ --with-iconv=/usr/local \
--with-iconv-dir=/usr/local --with-db --with-ndbm --with-imap=/usr/local \
--with-gettext=/usr/local --enable-bcmath --enable-calendar \
--with-mime-magic --enable-mbstring=all --enable-mbregex \
--with-curl=/usr/local --with-curl-streams --enable-trans-sid \
--with-jpeg-dir=/usr/local --with-png-dir=/usr/local \
--with-freetype-dir=/usr/local --with-gd=/usr/local \
--with-mysql=/usr/local --with-apxs=/www/bin/apxs \
--enable-xslt --with-xslt-sablot=/usr/local --with-expat-dir=/usr/local \
--with-dom --with-dom-xslt --with-dom-exslt \
--with-mssql=${HOME}/local
make
make install
Чтобы удалить все исходные файлы после сборки, выполните следующие команды:
cd ~/src
rm -rf php-4.4.7/
rm -f php-4.4.7.tar.gz
rm -rf freetds-0.64/
rm -f freetds-stable.tgz
После этого в конфигурационном файле Apache ~/proff/conf/httpd.conf появятся такие строки:
LoadModule php4_module /путь/к/домашней/директории/proff/libexec/libphp4.so
...
AddModule mod_php4.c
Если есть другие подобные строки, загружающие другие версии PHP, - закомментируйте их, поставив в начале символ "#".
Параметры для configure для сборки PHP в нашем примере мы взяли со страницы phpinfo(). Вы можете указать лишь нужные Вам модули и библиотеки. Полный список доступных параметров для сборки можно получить, выполнив команду:
./configure --help
Важным является указание --prefix и --with-config-file-path. Чтобы использовать те же настройки в php.ini, которые действуют на хостинге, скопируйте себе тот же файл:
cp /usr/local/lib/php.ini ${HOME}/local/
После выполнения всех действий, рестартуйте Apache.