本文来源于https://tieba.baidu.com/p/4622681019?red_tag=2507923498&traceid=
我是用第二种方法解决问题的。
项目装了lnmp包,发现不支持pathinfo, 上去查看,没有开启,在nginx的网站配置加上pathinfo的支持代码,
重启后还是不行。查看端口情况,发现php-fpm并没有监听任何端口,于是看php-fpm.conf,其中的
listen=/tmp/php-cgi.sock
于是改为
listem=9000
重启php-fpm
在nginx的网站配置中也把 include enable-php.conf 注释掉,因其内是指向到tmp/php-cgi.sock,而不是用端口。
再重启nginx
终于支持pathinfo了。
nginx支持pathinfo的代码为:
location ~ .*\.php
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
set $path_info "";
set $real_script_name $fastcgi_script_name;
if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
set $real_script_name $1;
set $path_info $2;
}
fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
fastcgi_param SCRIPT_NAME $real_script_name;
fastcgi_param PATH_INFO $path_info;
}
另一种是不改端口的
location ~ [^/]\.php(/|$)
{
# comment try_files $uri =404; to enable pathinfo
#try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}
两种方法都要把
include enable-php.conf
这行删掉或注释掉,因为重复了。