Hai*_*ood 5 php codeigniter loader
我正在尝试使用elliothaughins Socialize系统进行代码点火,
但是我不断
消息: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));
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,它正在调用一个模型,并成功加载了模型,即当它到达自动加载器时,在该加载器中它损坏的地方加载了库,
发出问题的特定库开始像
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 :(
Run Code Online (Sandbox Code Playgroud)
所以,
这是怎么回事,我该如何解决?
小智 5
我昨天在CI v2.0.2代码库中找到了一个错误。从本质上讲,正在发生的事情是您添加了一条附加路径来检查文件(正确),并且load方法循环遍历每个路径,直到找到您要查找的文件为止。
如果输出CI对象,则可能会发现您正在寻找的对象在那里,但是仍然失败。
在文件/codeigniter/core/Config.php中,由于某种原因,加载方法为$ found = false;。不会在路径循环的每次迭代中重置,因此,如果在第一次运行中找到了路径(在我的情况下),则$ found设置为true,但是在随后的运行中,$ found仍然为true,因此它尝试包含一个不存在的文件。
我通过将$ found变量的声明移到第一个foreach循环的开始以下来解决此问题。这样,每次都会重置它。我报告了该错误,因此希望它将在后续版本中解决。