[ 无法加载控制器:Index ] 这个出现频率最高的错误到底咋回事.

浏览:2447 发布日期:2014/12/17 分类:求助交流
无法加载控制器:Index

1/ 运行无措的模块拷贝下, 改了class名和namespace ,提示这个错误
2/ 用 define('BIND_MODULE','QQ'); 的方式自动生成的, OK, 但,删掉QQ目录,清空缓存Runtime目录, 再次生成了QQ目录, 访问就提示这个错误. 意思就是用过一次的名字不能再用了....forever.
3/ 用全新的thinkphp+全新PC环境, 以上错误必现.
4/ 最新版本onethink, PHP 5.5.15 , apache 2.4

例如:
用最新的onethink
创建create.php,内容为:define('APP_DEBUG', true );
define('BIND_MODULE','QQ');
define('APP_PATH','./Application/');
require './ThinkPHP/ThinkPHP.php';
访问结果就是 OK的, 但你删掉刚生成的QQ目录, 重新访问下这个create.php重新再生成次QQ目录, 访问就提示 无法加载控制器:Index


临时解决方案(原因未知):
ThinkPHP\Common\functions.php 621行之后加一句:import($class);修改后的controller方法为:/**
 * 用于实例化访问控制器
 * @param string $name 控制器名
 * @param string $path 控制器命名空间(路径)
 * @return Think\Controller|false
 */
function controller($name,$path=''){
    $layer  =   C('DEFAULT_C_layer');
    if(!C('APP_USE_NAMESPACE')){
        $class  =   parse_name($name, 1).$layer;
        import(MODULE_NAME.'/'.$layer.'/'.$class);
    }else{
        $class  =   ( $path ? basename(ADDON_PATH).'\\'.$path : MODULE_NAME ).'\\'.$layer;
        $array  =   explode('/',$name);
        foreach($array as $name){
            $class  .=   '\\'.parse_name($name, 1);
        }
        $class .=   $layer;
        import($class);
    }
    if(class_exists($class)) {
        return new $class();
    }else {
        return false;
    }
}
求大神解惑. 感激不尽.
最佳答案
评论( 相关
后面还有条评论,点击查看>>