在同一个Apache服务器中同时支持多种版本的PHP,一个Apache运行两个版本的PHP或者更多版本PHP软件,可以通过Apache的fast cgi来实现。
PHP版本众多,虽然PHP7已经问世,然而国内的大环境下,很多代码还停留在PHP 5.2,PHP 5.3, PHP 5.4,PHP 5.5以后就不断地增加了很多实用功能,到了PHP 7甚至还支持了 <=> 操作符,同时又舍弃了MySQL扩展,mysql_*()系列函数无法使用,想要服务器同时兼容各种版本的程序代码就显得尤其费劲。
Apache PHP多版本的实现,可以简单归纳为以下几步。
- 将Apache和PHP的结合从传统的模块方式改为fast cgi方式。
- 为不同的网站配置不同的PHP版本
Apache同时支持多个PHP版本的具体实现
- 在Apache官方下载mod_fcgid
- 在Apache配置文件中增加以下条目
参数为数字的条目可以自行调整参数值
- LoadModule fcgid_module modules/mod_fcgid.so
复制代码- AddHandler fcgid-script .php
- Options +ExecCGI
- FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 1001
- FcgidMaxRequestsPerProcess 1000
- FcgidIOTimeout 300
- FcgidIdleTimeout 300
- FcgidMaxRequestLen 1073741824
复制代码
- 在Apache中配置虚拟主机,为每个虚拟主机指定不同版本的PHP
其中FcgidWrapper后面的参数根据实际情况修改为php-cgi.exe的真实路径
注意php-cgi.exe路径不能包含空格或者英文字符以外的字符。
- ServerName 127.0.0.1
- Listen 80
- <VirtualHost *>
- ServerAlias aliwords.com www.aliwords.com
- FcgidWrapper "${SROOT}Bin/PHP/7.0.8/php-cgi.exe"
- #其他配置内容省略
- </VirtualHost>
- <VirtualHost *>
- ServerAlias wuxiancheng.cn www.wuxiancheng.cn
- FcgidWrapper "${SROOT}Bin/PHP/5.6.23/php-cgi.exe"
- #其他配置内容省略
- </VirtualHost>
复制代码
以上代码仅供参考,应当根据实际情况调整。
httpd Apache配置多版本PHP以后,访问不同的网站,就会自动调用不同版本的PHP. |
|