我正在尝试将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不读它然后:))
我知道我做错了什么但是对于我的生活,我看不出是什么。请帮忙
由于
答案 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进行依赖管理。