我正在尝试使用elliothaughins Socialize system代码点火器,
然而我一直在
消息:include(application / third_party / config / socializenetworks.php):无法打开流:没有这样的文件或目录
我跟踪了这个问题,当我打电话给
$this->load->add_package_path(APPPATH.'third_party/socialize/');
在装载程序类中,如果我die($path)
我只得到application/third_party
。
虽然控制器的代码是
,但这似乎很奇怪class SocializeController extends CI_Controller {
function __construct(){
parent::__construct();
parse_str($_SERVER['QUERY_STRING'], $_GET);
$this->load->add_package_path(APPPATH.'third_party/socialize/');
$this->_autoload();
}
private function _autoload(){
$this->load->model('socialize_migration_model');
$autoload = array();
include(APPPATH.'third_party/socialize/config/autoload'.EXT);
foreach ( $autoload as $type => $files ) {
$type = ($type == 'libraries') ? 'library' : $type;
foreach ( $files as $file ){
$this->load->$type($file);
}
}
}
public function data($key, $value)
{
$this->load->vars(array($key => $value));
}
}
你可以看到它正在调用一个成功加载的模型, 当它进入自动加载器时,它会加载它所在的库,
提供问题的特定库就像
一样class SocializeNetworks {
private $_obj;
private $_networks = array();
function __construct(){
$this->_obj =& get_instance();
$this->_obj->load->config('socializenetworks'); // this is the line we die on :(
所以,
这里发生了什么,我该如何解决?
答案 0 :(得分:4)
我追溯到昨天在CI v2.0.2代码库中的一个错误。基本上正在发生的是你正在添加一个额外的路径来检查文件(这是正确的),并且load方法遍历每个路径,直到找到你要查找的文件。
如果您输出CI对象,您可能会看到您正在寻找的内容,但它仍然失败。
在文件/codeigniter/core/Config.php中,由于某种原因,load方法是$ found = false;通过路径循环不会在每次迭代时重置,所以如果在第一次运行时找到路径(就像我的情况那样),那么$ found设置为true,但是在后续运行中,$ found仍然是,所以它试图包含一个不存在的文件。
我通过将$ found变量的声明移到第一个foreach循环开头的下方来解决这个问题。这样它每次都会重置它。我报告了这个错误,所以希望它会在后续版本中得到解决。