Nginx+php+fastcgi在win7下的配置

Posted 渐行渐远....那些错过的青春

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx+php+fastcgi在win7下的配置相关的知识,希望对你有一定的参考价值。

首先装载php
1、从www.php.net上下载php对应版本
2、解压之后放到c盘下(其实放哪无所谓,Apache会有配置指向,但是nginx不用)
3、因为用的5.3.17版本,已经有了php-cgi.exe这个,不用做其他的事情所以开始更改php的配置,先把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及以下版本不支持文件路径中间有空格也不支持中文!!!这个以上的版本不知道会不会支持,不过这个以下是不支持的……虽然Apache支持啊……
            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,由于本人用的win7系统,所以cmd先进的c盘(之前全扔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的路径中有中文、特殊符号、空格——虽然windows允许这样命名,但是nginx会报错(如之前吐槽的,Apache可以,为什么Apache要把精力放在允许空格和中文作路径上而不是改善其他的啊……费解),还有可能是Nginx的虚拟路径中存储了中文名称的文件,也可能导致nginx无法运行。
3、Nginx可以运行并并且解析HTML但是无法解析PHP,这个时候要看php-cgi.exe是否起来了,还要看nginx.conf中的监听端口和php-cgi的监听端口是否一致,如同上文配置中写到的,有很多方法查看。

以上是关于Nginx+php+fastcgi在win7下的配置的主要内容,如果未能解决你的问题,请参考以下文章

如何正确配置 Nginx + PHP

nginx+php的配置

nginx +php

nginx FastCGI错误Primary script unknown解决办法

Nginx 之 fastcgi配置

lnmp下的nginx代理