require_once(PHPExcel / Classes / PHPExcel.php):无法打开流

时间:2016-07-27 07:31:54

标签: php phpexcel silverstripe

我正在尝试将PHPExcel包含到Silverstripe 3站点以导出Excel工作表。现在我只是想测试,但是在尝试这个时我遇到了这个错误:

  

[警告] require_once(/sitename/mysite/AddOns/PHPExcel/Classes/PHPExcel.php):无法打开流:没有此类文件或目录

我知道这个文件存在,因为我将它复制到自己身上并且一遍又一遍地重新检查路径。所以我决定使用这段代码“好好检查文件是否存在”:

    if(!file_exists(Director::baseURL().'mysite/AddOns/PHPExcel/Classes/PHPExcel.php')) {
        echo 'sdf';exit;
}

根据错误,路径是正确的(即保存的地方),但文件不存在。我也以同样的方式要求文件,没有运气

require_once Director::baseURL().'mysite/AddOns/PHPExcel/Classes/PHPExcel.php';

我已经尝试了所有内容 - 检查文件权限,使用../../引用父文件夹,直接调用AddOns/PHPExcel,将其移动到这个新的AddOns文件夹(首先尝试将PHPExcel类放在根目录上发现Silverstripe不读它然后:))

我知道我做错了什么但是对于我的生活,我看不出是什么。请帮忙

由于

3 个答案:

答案 0 :(得分:5)

BASE_PATH是访问网络根文件夹的最佳方式。

require_once(BASE_PATH . '/AddOns/PHPExcel/Classes/PHPExcel.php');

如果您不使用作曲家,这只是一个问题,以正确的方式解决此问题use composer

答案 1 :(得分:5)

您应该考虑使用composer来包含PHPExcel类,这样就不需要手动require该类,并且可以帮助您进行依赖关系管理。

composer require phpoffice/phpexcel

答案 2 :(得分:1)

正如所指出的,Director::baseURL()将返回URL而不是文件路径。

而是需要相对于文件 web root,如下所示:

require_once(BASE_PATH . '/AddOns/PHPExcel/Classes/PHPExcel.php');

正如Dan和Barry在其他答案中所指出的那样,最好使用composer进行依赖管理。