建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 服务器 > Linux教程 >

关于ThinkPHP在Nginx服务器下出错的解决方法

时间:2011-11-09 10:13来源: 作者: 点击:
Aoki进来看。 这是一个ningx设置的问题,和TP无关。TP默认使用PATH_INFO来做CURD,而nginx默认设置不处理PATH_INFO,查看nginx可以看到出错日志: 2010/01/09 22:05:36 [error] 13988#9380: *3 CreateFile() "E:companyhomelabsphpthinkphpservernginx-0.8.31/....src/

Aoki进来看。

这是一个ningx设置的问题,和TP无关。TP默认使用PATH_INFO来做CURD,而nginx默认设置不处理PATH_INFO,查看nginx可以看到出错日志:
2010/01/09 22:05:36 [error] 13988#9380: *3 CreateFile() "E:companyhomelabsphpthinkphpservernginx-0.8.31/....src/Examples/Form/index.php/Index/insert" failed (3: The system cannot find the path specified), client: 127.0.0.1, server: localhost, request: "POST /Examples/Form/index.php/Index/insert HTTP/1.1", host: "localhost", referrer: "http://localhost/Examples/Form/"
说明nginx把PATH_INFO当成了目录文件的一部份,所以找不到该文件。

解决方法一:修改TP设置,不使用PATH_INFO

解决方法二:修改nginx设置,支持PATH_INFO

本人使用CoreServer集成包,就以此为例,修改nginx.conf和fastcgi-params


       location ~ .php$ {
修改为
       location ~ .php/?.*$ {


         fastcgi_param   SCRIPT_FILENAME   $document_root2$fastcgi_script_name;
修改为
         set $fastcgi_script_name2 $fastcgi_script_name;
         if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$") {
            set $fastcgi_script_name2 $1;
            set $path_info $2;
         }
         fastcgi_param   PATH_INFO $path_info;
         fastcgi_param   SCRIPT_FILENAME   $document_root2$fastcgi_script_name2;



fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
修改为
fastcgi_param   SCRIPT_NAME        $fastcgi_script_name2;

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片