在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是干啥的,请百度吧…