最新消息:欢迎光临!

解决thinkphp在nginx下php_self不正确的问题

php findever 1417浏览 0评论

在nginx下配置好phpinfo如下:

    index index.html index.php;
    root  /var/www/html/fsblog_com/;

    location / {
        #访问路径的文件不存在则重写URL转交给ThinkPHP处理
        try_files  $uri  /index.php$uri;
    }

    location ~ .+\.php($|/) {
        fastcgi_pass  unix:/tmp/php-cgi.sock;
        fastcgi_index  index.php;

        #设置PATH_INFO,注意fastcgi_split_path_info已经自动改写了fastcgi_script_name变量,
        #后面不需要再改写SCRIPT_FILENAME,SCRIPT_NAME环境变量,所以必须在加载fastcgi.conf之前设置
        fastcgi_split_path_info  ^(.+\.php)(/.*)$;
        fastcgi_param  PATH_INFO $fastcgi_path_info;

        #加载Nginx默认"服务器环境变量"配置
        include        fastcgi.conf;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }

按照常理来说thinkphp应该能正常访问了,BUT,写代码这事总不知道会从什么地方出漏子,这不,访问的时候路径找不到鸟!!

经过路由排查,发现PHP_SELF变量不正常,多了一个路径,这是为何呢?百度了下,在php.ini中发现了这么个配置:

cgi.fix_pathinfo=0

真是坑爹一百遍啊,将其值改为1就OK了,至于fix_pathinfo是干啥的,请百度吧…

转载请注明:Findever » 解决thinkphp在nginx下php_self不正确的问题

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址