Nginx上ThinkPHP的PATHINFO模式支持

Nginx上ThinkPHP的PATHINFO模式支持

石头 发布于2012-2-20 21:01:56 分类: 小技巧 已浏览1846次 网友评论7条 我要评论

最近一个项目中使用了ThinkPHP做为开发框架,URL上我们使用了PATHINFO模式,但是Nginx默认是不支持PATHINFO的,需要进行手动配置才可以,于是我们按照了以下方法进行了Nginx的PATHINFO支持配置:

修改nginx.conf,找到server中的 location ~ .php${},修改为location ~ .php {},并在其中增加以下内容:

1 set $path_info "";
2 set $real_script_name $fastcgi_script_name;
3 if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
4     set $real_script_name $1;
5     set $path_info $2;
6 }
7 fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
8 fastcgi_param SCRIPT_NAME $real_script_name;
9 fastcgi_param PATH_INFO $path_info;

不过无论我们如何测试,都发现PATHINFO模式总是不能正确运行,就算运行后,{:U}方法也总是出错,打印$_SERVER后发现PHP_SELF总是为“/”,因为我们Nginx版本为0.7.54我们开始怀疑是不是版本自身的BUG?于是我将Nginx进行了无缝升级至1.0.12,代码如下:

01 cd /usr/download/
02 wget http://nginx.org/download/nginx-1.0.12.tar.gz
03 tar -zxvf nginx-1.0.12.tar.gz
04 cd nginx-1.0.12
05 /opt/nginx -V
06 ./configure (上面的configure结果)
07 make
08 mv opt/nginx /opt/nginx.old
09 cp objs/nginx /opt/nginx
10 make upgrade

但是依然PATHINFO不能正确正常工作,于是我们确定是ThinkPHP的配置问题,正在我们不知道怎么办时,同事发现其实是ThinkPHP的_PHP_FILE的问题,在入口文件index.php中加入配置define('_PHP_FILE_',$_SERVER['SCRIPT_NAME']);,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值