Nginx服务器下使用ThinkPHP的pathinfo模式的问题
程序员文章站
2022-04-07 11:55:38
...
LNMP一键安装包装上过后,发现thinkphp的pathinfo模式无法使用。
百度一番,发现nginx/conf/vhost/域名 文件里有开启pathinfo的说明,于是启动了pathinfo。
但是项目仍然无法运行,于是我在本地和服务器同时运行了一下代码:
百度一番,发现nginx/conf/vhost/域名 文件里有开启pathinfo的说明,于是启动了pathinfo。
但是项目仍然无法运行,于是我在本地和服务器同时运行了一下代码:
var_dump($_SERVER);
发现PHP_SELF这一项有区别,so问题可能就在这里。
接下来在项目里搜索PHP_SELF,找到了这个文件:
ThinkPHP.php
if(IS_CGI) {
//CGI/FASTCGI模式下
$_temp = explode('.php',$_SERVER['PHP_SELF']);
define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));
}else {
define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'],'/'));
}
也就是ThinkPHP在cgi模式下依赖了PHP_SELF,问题果然在这里
最后又百度了一番,原来是php.ini里为了屏蔽一个漏洞设置了:
cgi.fix_pathinfo=0
正是因为这一行设置,导致了PHP_SELF的值出现了偏差。
然而LNMP集成包里的pathinfo.conf已经使用
try_files $fastcgi_script_name =404
解决了这个漏洞,所以我们可以修改php.ini为
cgi.fix_pathinfo=1
重启服务器,OK,问题解决
以上就介绍了Nginx服务器下使用ThinkPHP的pathinfo模式的问题,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
上一篇: Mac 升级 PHP 7
下一篇: python转换字符串为摩尔斯电码的方法
推荐阅读
-
Nginx服务器下配置使用索引目录的教程
-
解决nginx不支持thinkphp中pathinfo的问题
-
Linux下SVN服务器同时支持Apache的http和svnserve独立服务器两种模式且使用相同的访问权限账号
-
解决ThinkPHP在Nginx下无法使用pathin方式的问题
-
linux下使用ThinkPHP需要注意大小写导致的问题
-
Nginx服务器下使用rewrite重写url以实现伪静态的示例
-
解决Nginx下ThinkPHP框架中的U方法失效问题
-
vue下使用nginx刷新页面404的问题解决
-
在nginx中配置pathinfo模式支持thinkphp的URL重写
-
解决nginx不支持thinkphp中pathinfo的问题_PHP