Codeigniter在“core”文件夹中查找库

时间:2013-06-10 19:28:16

标签: php codeigniter

我使用ion_auth创建了这个Facebook应用程序。在某些浏览器中,当您授权应用程序时,它不会将用户登录到我的服务器上。

我检查了日志文件,发现了这个

ERROR - 2013-06-10 00:00:01 --> Severity: Warning  --> include_once(application/core/MY_Ion_auth.php): failed to open stream: No such file or directory /var/www/html/application/config/production/config.php 378
ERROR - 2013-06-10 00:00:01 --> Severity: Warning  --> include_once(): Failed opening 'application/core/MY_Ion_auth.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') /var/www/html/application/config/production/config.php 378

现在config.php第378行就像

function __autoload($class)
{
    if (strpos($class, 'CI_') !== 0) {
        @include_once(APPPATH . 'core/' . $class . EXT);
    }
}

ion_auth和go2都是自动加载的库......它们实际上位于库文件夹中。

任何想法?

2 个答案:

答案 0 :(得分:5)

此库加载错误与__autoload method的旧版本相关(允许您从application/core内自动加载自定义基本控制器)。 config.php是此方法的正确/推荐位置。

旧版本的副作用是CI尝试在核心目录中找到您加载的任何自定义库。

解决方案是使用new version of the autoload method,即:

function __autoload($class)
{
    if (strpos($class, 'CI_') !== 0)
    {
        if (file_exists($file = APPPATH . 'core/' . $class . EXT))
        {
            include $file;
        }

        elseif (file_exists($file = APPPATH . 'libraries/' . $class . EXT))
        {
            include $file;
        }
    }
} 

答案 1 :(得分:0)

我建议您在控制器的构造函数中包含相关库。例如:

class MyOwnAuth extends CI_Controller {

    /*
     * CONSTRUCTOR
     * Load what you need here.
     */
    function __construct()
    {
        parent::__construct();
        $this->load->library('form_validation');
        $this->load->helper('url');

        // Load MongoDB library instead of native db driver if required
        $this->config->item('use_mongodb', 'ion_auth') ?
        $this->load->library('mongo_db') :

        $this->load->database();

        $this->form_validation->set_error_delimiters($this->config->item('error_start_delimiter', 'ion_auth'), $this->config->item('error_end_delimiter', 'ion_auth'));

        $this->lang->load('auth');
        $this->load->helper('language');
    }
}
/* End of class MyOwnAuth*/

这样您只需加载对您的控制器运行至关重要的库。保持代码轻量级:)