容器技术交流

 找回密码
 立即注册
查看: 4116|回复: 3

重要:Nginx(PHP/fastcgi)的PATH_INFO问题

[复制链接]
发表于 2012-9-24 21:18:33 | 显示全部楼层 |阅读模式
希望能早点修补上。
QQ截图20120924210807.png

评分

1

查看全部评分

 楼主| 发表于 2012-11-7 00:53:46 | 显示全部楼层
######------ 2.0.87->2.0.89更新内容:
* 修正.htaccess伪静态文件失效的问题(新增加的bug)
* 当PHP文件不存时,返回404错误,而非403错误

我亲自试了一下,升级到了2.092,发现问题依然未解决,伪静态的直接404了。
这次主要原因是默认的站点配置文件也变得简单了。
以前的是:
  location ~* \.(php[3-9]?|phtm[l]?)(\/.*)*$ {

                  fastcgi_pass 127.0.0.1:8999;

                 if ($request_filename ~* (.*)\.(php[3-9]?|phtm[l]?)) {
                     set $lum_php_filename $1.$2;
                 }
                 if (!-f $lum_php_filename) {
                     return 403;
                 }

                  include enable_php.conf;
         }
而现在变成:
  location ~* \.(php[3-9]?|phtm[l]?)(\/.*)*$ {
                 if (!-f $request_filename) {
                         return 404;
                 }

                  fastcgi_pass 127.0.0.1:8999;

                  include enable_php.conf;
         }

越改越不对了。
主要原因就是缺少PATH_INFO变量,按照我最上面的方法,加个参数就可以了,默认配置文件一开始那样就是最好的。
这个bug折腾我不少时间,我想这个问题挺重要的,但这么久了,官方却一直不出面回应一下,神马情况啊?
 楼主| 发表于 2012-11-27 17:26:28 | 显示全部楼层
终于找到一个比较好的解决办法了。
就是在需要PATH_INFO的网站配置里,Server段处加上:
  1. location ~* \.(php[3-9]?|phtm[l]?)(\/.*)*$ {
  2. fastcgi_pass 127.0.0.1:8999;
  3. fastcgi_param PATH_INFO $fastcgi_script_name;
  4. include enable_php.conf;
  5. }
复制代码
QQ截图20121127171005.jpg


之前那样是修改了配置文件,但容易还原掉,比如切换Nginx或者添加网站。
这样改就不会因为修改配置文件自动还原了。
发表于 2012-11-29 13:44:42 | 显示全部楼层
谢谢分享!已经收集到  LuManager 问答
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|URLOS ( 粤ICP备18087780号 )

GMT+8, 2025-5-12 11:48 , Processed in 0.042071 second(s), 25 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表