Ubuntu+Nginx+PHP+php-fpm配置php(path_info)环境备忘
参考网址:http://wangye.org/blog/archives/574/
http://wiki.nginx.org/HttpFcgiModule
我安装的软件版本:Ubuntu11.10 nginx1.0.5 PHP5.3.6-13
安装nginx
apt-get install nginx
安装mysql-server
apt-get install mysql-server mysql-client
安装php-cgi
apt-get install php5-cgi php5-mysql php5-fpm
配置nginx
/etc/nginx/sites-available/default是默认站点的配置
把
#pass the PHP scripts to FastCGI
下面的几行注释符去掉,是配置php-cgi连接的
其中有一句
include fastcgi_params;
是包含fastcgi中PHP环境变量配置的文件,我们再去这个文件(/etc/nginx/)配置pathinfo
在文件开始加入以下几行,还要注意,下面已经有了一个fastcgi_param SCRIPT_FILENAME,我们把它注释掉不用
fastcgi_split_path_info ^((?U).+\.php)(/.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
下面重新加载配置
nginx -s reload invoke-rc.d php5-fpm restart
好了,下面在/usr/share/nginx/www/下建立一个php文件
<?php phpinfo();
打开浏览器访问localhost/i.php,如果能看到php信息页,并检查变量无误,就配置成功了.
2012/4/17补充
关于nginx文件类型错误解析漏洞,在传入fastcgi之前检测下解析出的php文件是否存在
if ( !-e $document_root$fastcgi_script_name){ return 404; }
这句加入到 fastcgi_split_path_info下面就可以了