Nginx大多数时候,是用在Linux服务器上面,相关的配置教程也比较多。在Windows服务器上配置Nginx+PHP的教程很难找到,所以在这里跟大家分享一下。

配置PHP

1、从PHP官网上下载php对应版本,建议PHP5.3 nts版本
2、解压之后放到c盘根目录下(个人喜好)
3、php.ini-development这个文件更名为php.ini,也有的版本ini后面跟的是别的,都改成.ini
4、打开php.ini文件,修改:

配置:

extension_dir = "这里写你的ext文件夹路径"     ;这个路径是指向扩展库的路径
upload_tmp_dir = "这里写你的上传缓存目录"     ;上传图片之类的缓存这里
session.save_path = "这里写你的session缓存目录"    ;这个是以文件形式储存sission,如果以数据库存储session则需要另外配置

打开以下扩展:

extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_odbc.dll
extension=php_pdo_sqlite.dll
extension=php_xmlrpc.dll

定义所在时区(本人定义的是上海时区):

date.timezone = Asia/Shanghai

由于Nginx要求cgi方式的php,还要修改以下配置

enable_dl = On
cgi.force_redirect = 0
cgi.fix_pathinfo=1
fastcgi.impersonate = 1
cgi.rfc2616_headers = 1  
配置Nginx

1、从http://nginx.org上下载Nginx,总之从官网上下个,不管官网是不是改地址了,貌似1.3.7版本没有分32位还是64位。
2、解压之后放c盘下(放别处应该也成,习惯了……)
3、打开conf,更改nginx.conf

打开log目录:

error_log logs/error.log;

更改其他配置

server {
        listen       8080;#因为装了Apache已经占用了80接口
        server_name  localhost;
        charset utf-8;#默认文件编码
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   d:/nginxWeb;#这里改成你自己的虚拟目录,注意!Nginx1.3.7及以下版本不支持文件路径中间有空格也不支持中文!

            index  index.html index.htm index.php;#注意这里添加了index.php,如果没有添加这个有可能报403错误,这个是win下的,linux或者其他系统是否会有此问题未知。

autoindex on;#如果文件不存在,列出目录树结构

    }
    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;#fastcgi监听的端口,与php的cgi启动时指定的要一致
        fastcgi_index  index.php;#默认首页
        fastcgi_param  SCRIPT_FILENAME  D:/nginxWeb$fastcgi_script_name;#启动路径,这里只需要将“D:/nginxWeb”这部分改为你的安装路径就可以了
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
运行并测试:

1、先要运行起php的cgi,由于我这里用的windows2008系统,所以cmd先进的c盘,访问到php路径中,输入
php-cgi.exe -b 127.0.0.1:9000
注意这里的-b 127.0.0.1:9000是指定cgi的监听端口,与上文中的Nginx配置要一致,如果有其他配置不记得之前php-cgi是那个端口,可以使用php-cgi.exe -h命令来查看配置(查看-b 后面的<address:port>)。想要查看所有被监听的端口则输入netstat -na

2、运行Nginx
另开启一个终端,访问到nginx文件夹下,输入nginx.exe

保持两个终端不关闭,访问由浏览器访问虚拟目录下的文件。

运行后自动关闭cmd的方法:
1、下载RunHiddenConsole.exe(http://redmine.lighttpd.net/attachments/660/RunHiddenConsole.zip)
2、创建start_php.bat,来启动php,文件内容如下:
@echo off
echo Starting PHP FastCGI...
RunHiddenConsole.exe d:\php\php-cgi.exe -b 127.0.0.1:9000 -c d:\php\php.ini
3、创建stop_nginx.bat,来关闭php和nginx进程,文件内容如下:
@echo off
echo Stopping nginx...
taskkill /F /IM nginx.exe > nul
echo Stopping PHP FastCGI...
taskkill /F /IM php-cgi.exe > nul
exit

相关问题:
1、403错误:在nginx.conf中的index配置未加入index.php默认首页,是导致403错误最常见的原因。
2、cmd中运行Nginx.exe产生错误可能是Nginx的路径中有中文、特殊符号、空格。
3、Nginx可以运行并并且解析HTML但是无法解析PHP,这个时候要看php-cgi.exe是否起来了,且nginx.conf中的监听端口和php-cgi的监听端口需要一致。

标签: php, windows, fastcgi, nginx

添加新评论