lnmp安装成功后,默认并不支持pathinfo特性。如果出现这种样式的连接地址/index.php/Home/Public/login.html,nginx会报404错误。经过一番摸索总结如下。
服务器 /usr/local/php/etc/php.ini 文件
cgi.fix_pathinfo=0
改成
cgi.fix_pathinfo=1
如果不修改cgi.fix_pathinfo,则$_SERVER['PHP_SELF']不能正确赋值,从而影响伪静态处理程序。
服务器 /usr/local/nginx/conf/enable-php.conf 文件 改成这样,然后重启lnmp 命令 lnmp restart
location ~ [^/]\.php(/|$) { #try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; include pathinfo.conf; }
一定要删除或注释try_files一行。另外在配置目录下lnmp贴心的创建了enable-php-pathinfo.conf文件直接使用之即可。
pathinfo.conf内容参考如下:
fastcgi_split_path_info ^(.+\.php)(.*)$; set $path_info $fastcgi_path_info; fastcgi_param PATH_INFO $path_info; try_files $fastcgi_script_name =404;