我有一个带控制器的ZF3项目,它打开excel文件并将它们与将要打开的模板进行比较。
在我的开发笔记本(xampp)上,一切正常,在我的生产系统(ubuntu)上,phpspreadsheet会导致错误(我认为是错误)。
这是我代码中的一个片段:
$fileName="./public/files/" . $fileName; //.\ neu
echo $fileName;
$template= new Spreadsheet();
$importdcl= new Spreadsheet();
$template= \PhpOffice\PhpSpreadsheet\IOFactory::load('./public/files/Template_DCL_final.xlsx');
$importdcl= \PhpOffice\PhpSpreadsheet\IOFactory::load( $fileName);
echo "filename geladen";
我已经将文件夹放在非相对路径中,因为basePath()不起作用,它不会给出任何结果。
echo语句只是因为服务器日志不会给出任何错误。在我的开发系统上,我在生产系统上得到echo文本,错误似乎出现在load语句中。
第一个问题:我怎么能在这里使用相对路径?
第二个问题:我怎样才能得到一个关于电子表格类错误的想法?
这是作曲家加载的:
"phpoffice/phpspreadsheet" : "dev-develop",
这是一个问题吗,因为它有这个开发版本?在这一点上,我很困惑,因为我玩了文件的部分,我在文件夹中手动更改了权限,我检查了服务器日志,现在我不知道任何想法。
此处文件夹中的权限:
任何有用的建议表示赞赏。
答案 0 :(得分:0)
回答(希望)第一个问题:如果您的应用程序基于ZendSkeletonApplication,那么您可以使用相对于您的应用程序根目录的路径(来自index.php):
/** * This makes our life easier when dealing with paths. Everything is relative * to the application root now. */ chdir(dirname(__DIR__));
因此,如果您的数据文件位于<application root>/public/files
,那么您应该能够从控制器/服务/等中读取它们。使用public/files/<file name>
路径。你可以用例如测试它。 file_exists
function。
我无法回答你的第二个问题,但这里有一些建议(好的,问题......):
www-data
)对数据文件的读/写权限?phpspreadsheet
是否依赖于任何PHP扩展?你在开发机器和服务器上都安装了它们吗?phpspreadsheet
是否使用该版本可能不具备的任何功能?