Windows配置Nginx + PHP 2020-04-17 前进路上 2 条评论 3477 次阅读 本文发布于2020-04-17, 文章内容或资源可能已经失效,仅供参考,谢谢。 之前使用nginx和php架设Web环境都是在Linux系统上,最近我尝试了一下在Windows系统上进行这项操作。在这记录一下。以便于以后查阅。 > 目录 > [TOC] # 软件安装 ## Nginx nginx下载地址:http://nginx.org/en/download.html 你可以在上面的官方地址中下载最新版nginx,我使用的是1.17.6版本(nginx-1.17.6.zip)。 下载zip压缩包后将其解压,把它放在你喜欢的位置,双击里面的`nginx.exe`就可以运行。 我的nginx路径为`C:\nginx-1.17.6` nginx运行后,用浏览器打开http://127.0.0.1 ,正常的话就可以看到nginx的欢迎页 [![nginx欢迎页](https://api.wuwz.net/distribute/web/zkkme/img/002b/002b-1.png "nginx欢迎页")](https://api.wuwz.net/distribute/web/zkkme/img/002b/002b-1.png "nginx欢迎页") ## PHP PHP与Nginx一样,也是下载一个压缩包,下载地址:http://php.net/downloads.php ,nginx下PHP是以FastCGI的方式运行,注意我们需要下载非线程安全版本(Non Thread Safe,nts)。 这里我使用的版本是php-7.2.26-nts-Win32-VC15-x64.zip。将其解压并放在你喜欢的位置,这里假设为`C:\php-7.2.26-nts-Win32-VC15-x64`。 # 环境配置 创建一个文件夹作为网站的运行目录,这个目录后面会多次用到,这里我的是`C:\www`。 ## Nginx 在Nginx根目录下找到conf目录,编辑器打开其中的nginx.conf 1. 找到下面这个配置块 ```shell location / { root html; index index.html index.htm; } ``` 将其修改为如下,注意修改相关字段 ```shell location / { root C:\www; index index.html index.htm index.php; } ``` 2. 找到下面这个配置块 ```shell #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; # } ``` 将每一行的`#`去掉,然后修改`root`值为`C:\www`,再把`/scripts`替换为`$document_root`,`$document_root`就是指前面`root`所指的站点路径,改完后应该如下 ```shell location ~ \.php$ { root C:\www; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } ``` ## PHP 1. 在php根目录下找到`php.ini-development`文件,复制一份在当前目录并且重命名为`php.ini` 2. 编辑`php.ini`,找到 `;cgi.fix_pathinfo=1`这一行,去掉前面的分号。 # 运行与测试 ## 运行原理 因为nginx是一个反向代理的web服务器,因此它其实必须依赖一个真正的web服务器才能执行动态的网页内容,因此这里php就是使用fastcgi来充当这个真正的web服务器,它运行在9000端口上,这也是为什么nginx.conf中有这样一句`fastcgi_pass 127.0.0.1:9000;`,知道这个原理后,下面的思路就很明确了,打开fastcgi,然后再打开nginx就行了 1. 运行nginx 双击nginx目录(`C:\nginx-1.17.6`)中的`nginx.exe`就可以运行nginx 2. 运行fastcgi 在CMD(命令提示符)中切换到PHP的目录(`C:\php-7.2.26-nts-Win32-VC15-x64`),然后执行如下命令 ```shell php-cgi.exe -b 127.0.0.1:9000 -c php.ini ``` 3. 测试 在网站目录(`C:\www`)下新建一个PHP文件,例如`hello.php`,然后向PHP文件中写入如下内容 ```php ``` 在浏览器访问http://127.0.0.1/hello.php ,网页输出内容"hello world"说明配置成功。 # 补充 由于执行`php-cgi.exe -b 127.0.0.1:9000 -c php.ini`后需要控制台一直处于开启状态,不是很方便。这时需要一个小工具RunHiddenConsole.zip来让它在后台运行。 下载上面的zip压缩包后解压,解压出来3个文件,如下图 [![RunHiddenConsole.zip](https://api.wuwz.net/distribute/web/zkkme/img/002b/002b-2.png "RunHiddenConsole.zip")](https://api.wuwz.net/distribute/web/zkkme/img/002b/002b-2.png "RunHiddenConsole.zip") 然后需要修改一下start_nginx.bat,内容如下 start_nginx.bat (将其中的nginx和PHP路径修改为自己的路径) ```shell @echo off REM Windows 下无效 REM set PHP_FCGI_CHILDREN=5 REM 每个进程处理的最大请求数,或设置为 Windows 环境变量 set PHP_FCGI_MAX_REQUESTS=1000 echo Starting PHP FastCGI... RunHiddenConsole C:\php-7.2.26-nts-Win32-VC15-x64\php-cgi.exe -b 127.0.0.1:9000 -c C:\php-7.2.26-nts-Win32-VC15-x64\php.ini echo Starting nginx... RunHiddenConsole C:\nginx-1.17.6\nginx.exe -p C:\nginx-1.17.6 ``` 请仔细检查路径是否更改正确。 如果一切正常的话,之后你就可以靠双击start_nginx.bat来启动nginx和PHP,想关闭的时候你可以双击stop_nginx.bat,nginx和PHP就都关闭了。 > REFERENCE - Windows下配置Nginx+php7 -- 蓝眼软件 标签: PHP, nginx 如果您对此页面有任何问题或建议,请在本站留言,或联系邮箱me[at]zkk.me本网站部分内容转载自其他网站,如有侵权,请联系博主
在Windows下很多时候nginx的n会被解释为换行,从而引发错误,就很难受。如果看见什么创建文件失败之类的可以检查这个。
多谢提醒