警告:include(PHPExcel.php):无法打开流:没有这样的文件或目录

时间:2013-12-16 22:01:42

标签: php include xampp phpexcel include-path

我试图实现Converting single sheet in an XLS file to CSV with PHPExcel - Memory exhausted,但却陷入了PHP Excel加载过程。

我下载了包(http://phpexcel.codeplex.com/),然后按照安装说明将“Classes”文件夹复制到三个目录中:

1)C:\ xampp \ htdocs \ mycode - 只是我当前的工作目录

2)C:\ xampp \ php \ pear - bcs我得到的echo get_include_path();

3)C:\ xampp \ php \ pear \ PEAR - 你知道,以防万一...

我跑的时候还是:

include 'PHPExcel.php';
include 'PHPExcel/IOFactory.php';

我收到以下错误消息:

  

警告:include(PHPExcel.php):无法打开流:第5行的C:\ xampp \ htdocs \ mycode \ paths.php中没有此类文件或目录

     

警告:include():在第5行的C:\ xampp \ htdocs \ mycode \ paths.php中打开'PHPExcel.php'以包含(include_path ='。; C:\ xampp \ php \ PEAR')失败

     

警告:include(PHPExcel / IOFactory.php):无法打开流:第6行的C:\ xampp \ htdocs \ mycode \ paths.php中没有此类文件或目录

     

警告:include():在C:\ xampp \ htdocs \ mycode \ paths.php中打开'PHPExcel / IOFactory.php'以包含(include_path ='。; C:\ xampp \ php \ PEAR')失败第6行

事先提前......

4 个答案:

答案 0 :(得分:5)

  

...将文件夹'Classes'复制到三个目录

似乎提示就在那里。不应该是

require_once 'Classes/PHPExcel.php';

或者,将Classes文件夹添加到包含路径...

set_include_path(implode(PATH_SEPARATOR, [
    realpath(__DIR__ . '/Classes'), // assuming Classes is in the same directory as this script
    get_include_path()
]));

require_once 'PHPExcel.php';

答案 1 :(得分:1)

在我的情况下,我的juste必须替换我的

include "../classes/Projects.php";

由此:

require_once "./classes/Projects.php";

答案 2 :(得分:0)

通常,当您包含文件时,它将相对于您正在调用include的文件。确保您正在查找正确的目录。我这样说是因为你包含文件的方式好像PHPExcel文件应该在完全相同的目录中,但看起来你把它放在一个名为classes的文件夹中。

例如,如果您的目录结构如下所示:

C:\
   - xampp\
       - htdocs\
           - mycode\
               - classes\  (where you extracted your files to...)
                   - (more files and subdirectories in here)
               - index.php (where you are including file into...)

然后您将包括index.php所在的位置。因此,如果PHPExcel位于classes文件夹中,那么您的include语句应如下所示:

include classes/PHPExcel.phpinclude classes/PHPExcel/IOFactory.php

答案 3 :(得分:0)

这个模块最初对我有用。但是后来我添加了 Yii2 并花了很长时间寻找解决问题的方法。对于那些找到这个话题的人,就像我所做的那样,并将 Yii2 添加到 Yii1 中,我会留下这个解决方案。

对我来说首先帮助了这个。

        spl_autoload_unregister(['YiiBase', 'autoload']);
        require_once Yii::app()->params['rootPath'] . '/PHPExcel/Classes/PHPExcel.php';
        spl_autoload_register(['YiiBase', 'autoload']);

当我添加 Yii2 时我改变了

        spl_autoload_unregister(['Yii', 'autoload']);
        spl_autoload_unregister(['YiiBase', 'autoload']);
        require_once Yii::app()->params['rootPath'] . '/PHPExcel/Classes/PHPExcel.php';
        spl_autoload_register(['YiiBase', 'autoload']);
        spl_autoload_register(['Yii', 'autoload']);

下次使用

  $objPHPExcel = new \PHPExcel();
  ...
  $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');