Спасибо всем. Сейчас потыкаю и скажу как получилось.
Проблема в том, что на серваке уже был php-5.3.3
Я собрал 5.4.7. Теперь хочу заменить у апача на новую.
We recommend creating the php-cgi.conf file in Apache's conf.d/ directory and setting these variables there. For CentOS systems this is located at /etc/httpd/conf.d/.
Ок. смотрим туда.
[root@test1 conf.d]# ll
total 16
-rw-r--r--. 1 root root 295 May 21 2009 manual.conf
-rw-r--r--. 1 root root 674 Nov 3 2011 php.conf
-rw-r--r--. 1 root root 392 Dec 8 2011 README
-rw-r--r--. 1 root root 299 May 21 2009 welcome.conf
Так как я здесь ничего не менял, думается что php.сonf это и есть решение моей проблемы.
[root@test1 conf.d]# cat php.conf
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps
Здесь нет явного указания на php. Откуда этот файл знает что php в /usr/local/bin ?
Ты собирал как? В твоем случае самый простой способ - это собрать или найти нормальную rpm-ку с новым php, установить её в систему и не городить огород из странных конфигураций.
Вариант с php-cgi больше подходит когда нужно для разных виртуальных хостов разный PHP завести, например, и разделить их по правам доступа, конфигурации и т.п. Ну и вообще он проще, потому что ты не апач курочишь, а отдельностоящее приложение.
Если же ты хочешь поменять именно версию встроенного пхп, то как выше указали - LoadModule указывает путь к модулю, эту директиву и надо править.
Только не надо «заменять этот модуль на симлинк». Привычки раскладывать грабли по системе надо изживать.
Но вообще в случае когда речь о CentOS и о том чтобы вообще заменить системный php на более новый, самый правильный способ - это пойти сюда:
Никак. При сборке модуля php для apache важна версия apache и php. Если php был собран не под вашу версию apache, он просто не будет работать. А вообще, если вы собрали свежий php, просто замените символическую ссылку на mod_php.so на ссылку новой версии модуля php(собранную вами для вашей версии apache). И всё будет работать.
Только не надо «заменять этот модуль на симлинк». Привычки раскладывать грабли по системе надо изживать.
Вариант с симлинком не поломается при обновлении апача, а вот вариант с абсолютным путем нет, чтобы абсолютный путь не сломался файл должен лежать в conf.d/php5.conf, а не в основном httpd.conf
Более того даже вариант с /usr/local это уже костыль, я собирал SRPM это не настолько сложно как кажется.
Вариант с симлинком не поломается при обновлении апача
Вообще при обновлении пакета конфиги в /etc не затираются, а вот любые файлы в /usr - могут. Поэтому править конфиги нормально, а вот создавать неопакеченные симлинки в системных каталогах - неправильно.
Ну, ещё проще прописать путь до модуля в списке директив LoadModule... А вообще, лучший способ - это сборка пакетов со свежими apache и php из сорцов. Быстро, надежно и сборку можно получить ванильную. А то патчики, накладываемые дистростроителями не факт, что не несут в себе новых глюков.