ThinkPHP 3.2.2 路由重写BUG ,修正方法

来源:互联网 发布:权力的游戏大麻雀知乎 编辑:程序博客网 时间:2024/06/14 09:53

TP3.2.x问题真多,官网根本就不维护了,很多时候TP官网都根本无法下载TP。

一个很严重的BUG,网址重写无法支持原因ThinkPHP本来就根本执行顺序全错


解决方法:

文件:

#D:\PC\zbphp.com\ThinkPHP\Library\Think\Dispatcher.class.php


代码:(替换成下面的即可 by default7#zbphp.com)

        if(empty($_SERVER['PATH_INFO'])) {            $_SERVER['PATH_INFO'] = '';            define('__INFO__','');            define('__EXT__','');        }else{            Route::check(); //add by default7#zbphp.com            define('__INFO__',trim($_SERVER['PATH_INFO'],'/'));            // URL后缀            define('__EXT__', strtolower(pathinfo($_SERVER['PATH_INFO'],PATHINFO_EXTENSION)));            $_SERVER['PATH_INFO'] = __INFO__;                 if (__INFO__ && !defined('BIND_MODULE') && C('MULTI_MODULE') && empty($_GET)){ // 获取模块名                $paths      =   explode($depr,__INFO__,2);                $allowList  =   C('MODULE_ALLOW_LIST'); // 允许的模块列表                $module     =   preg_replace('/\.' . __EXT__ . '$/i', '',$paths[0]);                if( empty($allowList) || (is_array($allowList) && in_array_case($module, $allowList))){                    $_GET[$varModule]       =   $module;                    $_SERVER['PATH_INFO']   =   isset($paths[1])?$paths[1]:'';                }            }                           }



修正版:

        if(empty($_SERVER['PATH_INFO'])) {            $_SERVER['PATH_INFO'] = '';            define('__INFO__','');            define('__EXT__','');        }else{            define('__INFO__',trim($_SERVER['PATH_INFO'],'/'));            // URL后缀            define('__EXT__', strtolower(pathinfo($_SERVER['PATH_INFO'],PATHINFO_EXTENSION)));            $_SERVER['PATH_INFO'] = __INFO__;            if (__INFO__ && !defined('BIND_MODULE') && C('MULTI_MODULE') && !Route::check() && !empty($_GET)){ // 获取模块名                $paths      =   explode($depr,__INFO__,2);                $allowList  =   C('MODULE_ALLOW_LIST'); // 允许的模块列表                $module     =   preg_replace('/\.' . __EXT__ . '$/i', '',$paths[0]);                if( empty($allowList) || (is_array($allowList) && in_array_case($module, $allowList))){                    $_GET[$varModule]       =   $module;                    $_SERVER['PATH_INFO']   =   isset($paths[1])?$paths[1]:'';                }            }                           }



0 0
原创粉丝点击