php7.0已经发布,几经测试兼容性比较好,目前没出什么状况,但还是不敢贸然配置到服务器上去。
目前服务器是php5.5,就想到能不能搞php多版本共存,于是本机折腾了下成功了。思路就是让让每个版本php的php-cgi运行在不同端口,用nginx监听此端口。
一、
本机是windows7,首先需要下载的是
php7.0RC(目前最新版)
nginx
RunHiddenConsole.exe。
RunHiddenConsole.exe用来隐藏nginx以及php-cgi的控制窗口。
二、
解压相关软件,我的主目录是e:/server,所以我的php7解压目录e:/server/php7.0,nginx解压目录e:/server/nginx-1.9.4,另外有个php5.4版本解压目录e:/server/php5.4。
三、
把RunHiddenConsole.exe放到nginx解压目录。并在此目录创建启动、停止、重启nginx和php-cgi的脚本。
start.bat
@ECHO OFF ECHO Starting PHP FastCGI… RunHiddenConsole e:/server/php5.4/php-cgi.exe -b 127.0.0.1:9054 -c e:/server/php5.4/php.ini RunHiddenConsole e:/server/php7.0/php-cgi.exe -b 127.0.0.1:9070 -c e:/server/php7.0/php.ini echo Starting nginx… RunHiddenConsole e:/server/nginx-1.9.4/nginx.exe exit
stop.bat
@echo off echo Stopping nginx… taskkill /F /IM nginx.exe > nul echo Stopping PHP FastCGI… taskkill /F /IM php-cgi.exe > nul exit
restart.bat
@ECHO OFF echo Stopping nginx… taskkill /F /IM nginx.exe > nul echo Stopping PHP FastCGI… taskkill /F /IM php-cgi.exe > nul echo ReStarting nginx… ECHO Starting PHP FastCGI… RunHiddenConsole e:/server/php5.4/php-cgi.exe -b 127.0.0.1:9054 -c e:/server/php5.4/php.ini RunHiddenConsole e:/server/php7.0/php-cgi.exe -b 127.0.0.1:9070 -c e:/server/php7.0/php.ini echo Starting nginx… RunHiddenConsole E:/server/nginx-1.9.4/nginx.exe exit
解释:以上脚本中,php-cgi.exe -b 127.0.0.1:90xx表示php的端口,此处我以版本表示,所以是9054和9070.
四、
设置nginx的监听端口。nginx的server中都有一段代码片段:
location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9070; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
其中,fastcgi_pass 127.0.0.1:9070 便是nginx监听的端口了。配合虚拟主机配置多个server便实现了让不同网站程序运行在不同的php版本上,我这里是运行在php7上,所以是9070,其他不再细述。
这样就全部大功告成了。
最后注意,这只是在windows下的方法(脚本中用php-cgi.exe启动php)。至于linux,因为是用php-fpm来启动php的,所以需要在php-fpm.conf配置文件里的修改端口,这里也不再细述,改个文件而已。
欢迎一起探讨。