thinkphp3.2.3版本U函数bug

浏览:1035 发布日期:2016/04/12 分类:技术分享 关键字: v3.2.3的U函数bug
nginx环境下设置了PATHINFO环境,当设置php.ini中cgi.fix_pathinfo=0的时候.U函数会出现bug
经过细查是因为__APP__这个常量的值为 ".php"
继续往上找才发现是因为$_SERVER['PHP_SELF'] 没有获取到值.所以造成设置_PHP_FILE_这个常量的值是.php

在ThinkPHP.php中更改如下可解决:if(!IS_CLI) {
    // 当前文件名
    if(!defined('_PHP_FILE_')) {
        if(IS_CGI) {
            //CGI/FASTCGI模式下
            $_temp  = explode('.php',$_SERVER['PHP_SELF']);
        //添加如下
            if ($_temp[0] === "")
            {
                define('_PHP_FILE_',    rtrim($_SERVER['SCRIPT_NAME'],'/'));
            }
            else
            {
                define('_PHP_FILE_',    rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));
            }
  //结束添加
        }else {
            define('_PHP_FILE_',    rtrim($_SERVER['SCRIPT_NAME'],'/'));
        }
    }
    if(!defined('__ROOT__')) {
        $_root  =   rtrim(dirname(_PHP_FILE_),'/');
        define('__ROOT__',  (($_root=='/' || $_root=='\\')?'':$_root));
    }
}
最佳答案
评论( 相关
后面还有条评论,点击查看>>