Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 编码点火器第三方,$this->;负载->;添加\u包\u路径工作不正常_Php_Codeigniter_Loader - Fatal编程技术网

Php 编码点火器第三方,$this->;负载->;添加\u包\u路径工作不正常

Php 编码点火器第三方,$this->;负载->;添加\u包\u路径工作不正常,php,codeigniter,loader,Php,Codeigniter,Loader,我正在尝试使用代码点火器 然而,我不断地 消息:include(application/third_party/config/socializenWorks.php):无法打开流:没有这样的文件或目录 我追踪了这个问题,当我打电话给 $this->load->add_package_path(APPPATH.“第三方/socialize/”) 在loader类中,如果我执行die($path)操作,我只会得到应用程序/第三方 这似乎很奇怪,因为控制器的代码是 class SocializeCon

我正在尝试使用代码点火器

然而,我不断地

消息:include(application/third_party/config/socializenWorks.php):无法打开流:没有这样的文件或目录

我追踪了这个问题,当我打电话给
$this->load->add_package_path(APPPATH.“第三方/socialize/”)

在loader类中,如果我执行
die($path)
操作,我只会得到
应用程序/第三方

这似乎很奇怪,因为控制器的代码是

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 :(
所以


这里发生了什么?我如何修复它?

我追踪到昨天在CI v2.0.2代码库中的一个bug。实际上,您正在添加一个额外的路径来检查其中的文件(这是正确的),load方法在每个路径中循环,直到找到您要查找的文件为止

如果您输出CI对象,您可能会看到您正在寻找的东西在那里,但它仍然失败

在文件/codeigniter/core/Config.php中,由于某种原因,加载方法是$found=false;不会在通过path循环的每次迭代中重置,因此,如果在第一次运行时(在我的示例中)找到该路径,则$found将设置为true,但在后续运行时,$found仍然为true,因此它会尝试包含一个不存在的文件


我通过将$found变量的声明移动到第一个foreach循环的开始位置下方来解决这个问题。这样,每次都会重置它。我报告了该错误,因此希望它能在后续版本中得到解决。

它试图包含一个位于
application/third\u party/config/
中的文件,但您的第三方模块似乎位于
APPPATH中。'third\u party/socialize/
。您是否有现有的
应用程序/第三方/config/
文件夹?这里面有什么?显然这一定是个错误,第三方文件夹的想法是,你可以在一个文件夹中部署整个集合、库、帮助程序、模型、配置文件、视图,如果你必须将配置文件放到该文件夹的otu中,这会破坏目的。。。