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
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
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下的配置的主要内容,如果未能解决你的问题,请参考以下文章