PHP版本眾多,彼此之間兼容性不好,不同程序經常需要的不同版本的PHP版本。這里介紹如何使用NGINX讓不同版本的PHP共存。
軟件下載地址
與nginx整合的php需要選擇Non Thread Safe(nts)的免安裝版本。
- NGINX下載。本例下載的是
nginx/Windows-1.10.2
。下載后解壓即可。 - PHP7.0下載。本例下載的是
PHP 7.0 (7.0.14) VC14 x64 Non Thread Safe
。下載后解壓即可。 - PHP5.2下載。本例下載的是
php-5.2.17-nts-Win32-VC6-x86.zip
。下載后解壓即可。 - RunHiddenConsole,用於啟動php-cgi,可以實現關閉窗口依然在后台運行。解壓后復制
RunHiddenConsole.exe
到nginx的根目錄(nginx.exe
文件所在目錄)。
配置NGINX
修改nginx.conf
配置文件。分別將請求發送到9000、9001端口。
server { listen 80; server_name www.mydomain.com; location / { root D:/php_program; index index.php index.html index.htm; } location ~ \.php$ { root D:/php_program; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } server { listen 80; server_name www.mydomain1.com; location / { root D:/php_program1; index index.php index.html index.htm; } location ~ \.php$ { root D:/php_program1; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
配置PHP
復制php.ini-recommended
或php.ini-development
為php.ini
。
;設置php的ext路徑,通常需要用絕對路徑。
extension_dir = "D:/php-5.2.17-nts-Win32-VC6-x86/ext" ;提交數據最大限制 post_max_size = 30M ;上傳文件的最大限制。 upload_max_filesize = 100M ;通常要開啟的擴展,php7.0無php_mysql.dll、php_pdo.dll,無需開啟這兩項。 extension=php_gd2.dll extension=php_mbstring.dll extension=php_mysql.dll extension=php_mysqli.dll extension=php_pdo.dll extension=php_pdo_mysql.dll ;php與nginx整合必須開啟 cgi.fix_pathinfo=1
啟動腳本
在nginx根目錄(nginx.exe
文件所在目錄)新建啟動腳本start_nginx.bat
。兩個版本的php分別用不同端口。
@ECHO OFF ECHO Starting PHP5.2 FastCGI... RunHiddenConsole.exe D:/php-5.2.17-nts-Win32-VC6-x86/php-cgi.exe -b 127.0.0.1:9000 ECHO Starting PHP7.0 FastCGI... RunHiddenConsole.exe D:/php-7.0.14-nts-Win32-VC14-x64/php-cgi.exe -b 127.0.0.1:9001 ECHO Starting Nginx... start nginx
在nginx目錄新建關閉腳本stop_nginx.bat
。兩個php-cgi用一個命令即可關閉。
@ECHO OFF ECHO Stoping PHP FastCGI... taskkill /F /IM php-cgi.exe > nul ECHO Stoping Nginx... taskkill /F /IM nginx.exe > nul