thinkphp3.2版本 分页类 page.class.php url错误
thinkphp在Nginx没有pathinfo的情况出现.PHP的文件,这个让人很是纠结。在服务器是Linux,web服务器是nginx, CGI接口是FASTCGI,就会出现这个问题。
问题原因:ThinkPHP/common/runtime.php中定义IS_CGI常量的定义有问题;错误代码:
在fpm下,PHP_SAPI的值是fpm-fcgi,所以判断IS_CGI为0。导致在定义_PHP_FILE_常量时错误,进而导致
ThinkPHP/Lib/Core/Dispatcher.class.php中定义__APP__常量值错误。而ThinkPHP/Common /functions.php中U()方法定义用到__APP__,导致U()创建的URL错误;U()部分代码:
简单来说,当cgi.fix_pathinfo=0时,_PHP_FILE_获取的值是.php,导致U函数生成URL不正确,改为1后,_PHP_FILE_获取的值是index.php。
但是cgi.fix_pathinfo=1时会有安全隐患,目前暂时先把代码改成如下了:
解决方案:简单粗暴if (IS_CGI) { //CGI/FASTCGI模式下 //$_temp = explode(".php",$_SERVER["PHP_SELF"]); //define("_PHP_FILE_", rtrim(str_replace($_SERVER["HTTP_HOST"],"", //$_temp[0].".php"),"/")); define("_PHP_FILE_", rtrim($_SERVER["SCRIPT_NAME"], "/")); } else { define("_PHP_FILE_", rtrim($_SERVER["SCRIPT_NAME"], "/")); }修改如上:文件地址thinkphp3.2版本及以上的目录位置:thinkphp
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: yii2 elasticsearch5.4.1 使用心得
- 下一篇:没有了