云服务器知识

服务器Windows下配置Nginx使之支持PHP

  

1. 首先,将 nginx.conf 中的 PHP 配置注释去掉。

01 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
02 #
03 #location ~ .php$ {
04 # root html;
05 # fastcgi_pass 127.0.0.1:9000;
06 # fastcgi_index index.php;
07 # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
08 # include fastcgi_params;
09 #}
10
11 location ~ .php$ {
12 root html;
13 fastcgi_pass 127.0.0.1:9000;
14 fastcgi_index index.php;
15 fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
16 include fastcgi_params;
17 }
2. 这里使用的 PHP 是以 cgi 的形式,所以要启用 php-cgi,修改 php.ini,把注释去掉:

1 ;cgi.fix_pathinfo=1
2 cgi.fix_pathinfo=1
3. 启动 php-cgi 和 nginx,下面介绍两个脚本:

start_nginx.bat

01 @echo off
02
03 REM set PHP_FCGI_CHILDREN=5
04 set PHP_FCGI_MAX_REQUESTS=1000
05
06 echo Starting PHP FastCGI...
07 RunHiddenConsole D:/xampp/php/php-cgi.exe -b 127.0.0.1:9000 -c D:/xampp/php/php.ini
08
09 echo Starting nginx...
10 RunHiddenConsole D:/nginx/nginx.exe -p D:/nginx/
stop_nginx.bat

view sourceprint?

1 @echo off
2 echo Stopping nginx...
3 taskkill /F /IM nginx.exe > nul
4 echo Stopping PHP FastCGI...
5 taskkill /F /IM php-cgi.exe > nul
6 exit


可以看看进程里,如果 nginx 和 php-cgi 都有,那么差不多要成功了。最后,可能会出现 "No input file specified" 的问题,那么修改一下 nginx.conf :

01 location ~ .php$ {
02 #root html;
03 root D:/nginx/html;
04 fastcgi_pass 127.0.0.1:9000;
05 fastcgi_index index.php;
06 #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
07 #fastcgi_param SCRIPT_FILENAME D:/nginx/html$fastcgi_script_name;
08 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
09 include fastcgi_params;
10 }
注意注释的地方,修改成下面那行,请根据你的具体文件配置路径。

编辑 test.php :

1 2 phpinfo();
3 ?>
运行 http://localhost:81/test.php,OK。