CodeIgniter& get_instance()无法在php5.6版本中运行?

时间:2017-05-29 11:19:08

标签: php codeigniter

我的codeigniter网站在php5.4版本中正常运行但是当我将我的php版本升级到php5.6.30时它无法正常工作。

function &get_instance()
{       
    return CI_Controller::get_instance();
}

上面的函数在我的文件的233行,它返回空值。

错误 - 致命错误:第233行的Coginiter_site \ system \ core \ CodeIgniter.php中找不到类“CI_Controller”

我已追踪错误点 - system / core / common.php

下的代码
if ( ! function_exists('load_class'))
{
    function &load_class($class, $directory = 'libraries', $prefix = 'CI_')
    {
        static $_classes = array();

        // Does the class exist?  If so, we're done...
        if (isset($_classes[$class]))
        {
            return $_classes[$class];
        }

        $name = FALSE;

        // Look for the class first in the local application/libraries folder
        // then in the native system/libraries folder
        foreach (array(APPPATH, BASEPATH) as $path)
        {
            if (file_exists($path.$directory.'/'.$class.'.php'))
            {
                $name = $prefix.$class;

                if (class_exists($name) === FALSE)
                {
                    require($path.$directory.'/'.$class.'.php');
                }

                break;
            }
        }

        // Is the request a class extension?  If so we load it too
        if (file_exists(APPPATH.$directory.'/'.config_item('subclass_prefix').$class.'.php'))
        {
            $name = config_item('subclass_prefix').$class;

            if (class_exists($name) === FALSE)
            {
                require(APPPATH.$directory.'/'.config_item('subclass_prefix').$class.'.php');
            }
        }

        // Did we find the class?
        if ($name === FALSE)
        {
            // Note: We use exit() rather then show_error() in order to avoid a
            // self-referencing loop with the Excptions class
            exit('Unable to locate the specified class: '.$class.'.php');
        }

        // Keep track of what we just loaded
        is_loaded($class);

        $_classes[$class] = new $name();
        return $_classes[$class];
    }
}

返回空结果 这一行创建了一个问题 $ _ classes [$ class] = new $ name(); 请检查一下。

2 个答案:

答案 0 :(得分:2)

您可以关注第一个solution吗?希望它能解决你的问题。

答案 1 :(得分:1)

您可以尝试this,更改 CodeIgniter.php第75行

set_error_handler('_exception_handler');

set_exception_handler('_exception_handler');

<强>更新

如果这不起作用,也许你可以查看其他事情:

  1. 检查是否是数据库错误(这很奇怪,但有时会出现数据库错误 显示为'找不到CI_Controller',例如,带有错误的数据库 名称)。
  2. 检查更改:$config['log_threshold'] = 0;是否有效 为你
  3. 重新安装整个CI框架系统文件夹。
  4. Herehere有同样的问题,您可以查看所有答案。

    如果这些都不起作用,请尝试将一些代码和上下文发布到您的控制器。

    希望它有所帮助!