На моем сервере apache я хотел бы запускать несколько версий PHP одновременно, чтобы я мог легко переключаться между ними в зависимости от потребностей проекта. Я заметил, что некоторые поставщики виртуального хостинга, которые предлагают несколько версий PHP, требуют, чтобы вы указали версию PHP, которая вам нужна, в вашем .htaccess
:
AddHandler application/x-httpd-php5 .php
Я хотел бы реализовать что-то подобное на своем сервере, чтобы я мог легко переключать версии PHP:
AddHandler application/xhttpd-php53 .php
# .. or ..
AddHandler application/xhttpd-php54 .php
# .. or ..
AddHandler application/xhttpd-php55 .php
Однако все версии PHP, которые я скомпилировали, имеют обработчик с именем application/xhttpd-php
или php5-script
. Я пытался найти ./configure
флаг, который позволяет вам изменить эти имена обработчиков, но ничего не появилось.
Я искал Репозиторий PHP на github для этих два струны и вот что я нашел:
/sapi/apache2filter/sapi_apache2.c
(Строки 666-668)/sapi/apache2handler/sapi_apache2.c
(Строки 68-70)/main/php.h
(Строка 242)/sapi/apache/mod_php5.c
(Строка 979)/sapi/apache_hooks/mod_php5.c
(Строка 1408)Будет ли безопасно заменить эти строки новым именем обработчика и номером версии, или существует более широко используемый (или фактически задокументированный) способ изменения имени обработчика?
Вы можете использовать одну из версий php как модуль, а другие версии как cgi. Если вам нужно использовать определенную версию php в каком-то конкретном проекте (vhost), вы можете использовать что-то вроде
<VirtualHost *:80>
ServerAdmin webmaster@example.net
DocumentRoot /vhosts/php55.example.net/
ServerName php55.example.net
ScriptAlias /php-fastcgi/ /usr/local/php-5.5.1/bin/
AddHandler php-fastcgi .php
AddType application/x-httpd-php .php
Action php-fastcgi /php-fastcgi/php-cgi
<Directory /vhosts/php55.example.net>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster@example.net
DocumentRoot /vhosts/php54.example.net/
ServerName php54.example.net
ScriptAlias /php-fastcgi/ /usr/local/php-5.4.17/bin/
AddHandler php-fastcgi .php
AddType application/x-httpd-php .php
Action php-fastcgi /php-fastcgi/php-cgi
<Directory /vhosts/php54.example.net>
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>