1. 程式人生 > >wnmp環境php7與其他php版本共存

wnmp環境php7與其他php版本共存

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配置檔案裡的修改埠,這裡也不再細述,改個檔案而已。

歡迎一起探討。