4

我使用 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 都是自动加载的库......它们实际上位于库文件夹中。

有任何想法吗?

4

2 回答 2

5

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

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

解决方法是使用新版的autoload方法,即:

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;
        }
    }
} 
于 2013-11-20T17:28:22.950 回答
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*/

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

于 2013-06-10T19:38:11.283 回答