如何从 htaccess 为多个 PHP 版本配置 Apache
How to configure Apache for Multiple PHP version from htaccess
我已经从 Remi Repositories 安装了 PHP 个版本的集合,对于问题本身可能会被忽略,但为了理解我尝试过的过程而保留。
它们在命令行下运行良好,但我想将它们与 Apache 2(Fedora 24 上的 httpd)一起使用,运行宁多个虚拟主机,如:
php54.test
php55.test
php56.test
php70.test
php71.test
我已经创建了 VirtualHost conf 文件,每个文件都运行良好。
我想 运行 每个对应的 php 版本(根据建议的 ServerName),但我找不到如何从每个虚拟主机加载 PHP。
我找不到相应的 Remi libphpX.so 来将它们加载为模块:
<VirtualHost *:80>
ServerName php54.test
DocumentRoot /var/www/php54
#SOMETHING LIKE THIS...
LoadModule php??_module modules/libphp??.so
</VirtualHost>
我有一个共享主机,这不是新闻,它允许我从 .htaccess 更改 PHP 版本,我可以这样做:
AddHandler application/x-httpd-php54 .php
AddHandler application/x-httpd-php55 .php
AddHandler application/x-httpd-php56 .php
AddHandler application/x-httpd-php7 .php
AddHandler application/x-httpd-php71 .php
我现在可能看起来像个假人,但我怎样才能进行相同的 .htaccess 切换以获得多个 PHP 版本可用?
我可能不知道在 Google 上搜索什么以及如何搜索才能找到最匹配的答案。
您不能使用多个版本的 mod_php。
更好的解决方案是使用 php-fpm(Fastcgi 进程管理器),在每个 vhost 中使用一个 SetHandler 到 fcgi 服务器:
SetHandler "proxy:fcgi://127.0.0.1:9070"
或者(使用 unix 域套接字)
SetHandler "proxy:unix:/var/opt/remi/php70/run/php-fpm/www.sock|fcgi://localhost"
本文对此进行了描述:My PHP workstation。
我已经从 Remi Repositories 安装了 PHP 个版本的集合,对于问题本身可能会被忽略,但为了理解我尝试过的过程而保留。
它们在命令行下运行良好,但我想将它们与 Apache 2(Fedora 24 上的 httpd)一起使用,运行宁多个虚拟主机,如:
php54.test
php55.test
php56.test
php70.test
php71.test
我已经创建了 VirtualHost conf 文件,每个文件都运行良好。
我想 运行 每个对应的 php 版本(根据建议的 ServerName),但我找不到如何从每个虚拟主机加载 PHP。 我找不到相应的 Remi libphpX.so 来将它们加载为模块:
<VirtualHost *:80>
ServerName php54.test
DocumentRoot /var/www/php54
#SOMETHING LIKE THIS...
LoadModule php??_module modules/libphp??.so
</VirtualHost>
我有一个共享主机,这不是新闻,它允许我从 .htaccess 更改 PHP 版本,我可以这样做:
AddHandler application/x-httpd-php54 .php
AddHandler application/x-httpd-php55 .php
AddHandler application/x-httpd-php56 .php
AddHandler application/x-httpd-php7 .php
AddHandler application/x-httpd-php71 .php
我现在可能看起来像个假人,但我怎样才能进行相同的 .htaccess 切换以获得多个 PHP 版本可用?
我可能不知道在 Google 上搜索什么以及如何搜索才能找到最匹配的答案。
您不能使用多个版本的 mod_php。
更好的解决方案是使用 php-fpm(Fastcgi 进程管理器),在每个 vhost 中使用一个 SetHandler 到 fcgi 服务器:
SetHandler "proxy:fcgi://127.0.0.1:9070"
或者(使用 unix 域套接字)
SetHandler "proxy:unix:/var/opt/remi/php70/run/php-fpm/www.sock|fcgi://localhost"
本文对此进行了描述:My PHP workstation。