我使用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都是自动加载的库......它们实际上位于库文件夹中。
任何想法?
答案 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*/
这样您只需加载对您的控制器运行至关重要的库。保持代码轻量级:)