0

我有一个带有控制器的 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 语句只是因为服务器日志不会给出任何错误。在我的开发系统上,我在生产系统上得到回显文本,错误似乎在加载语句中。

第一个问题:我怎么能在这里使用相对路径?

第二个问题:我怎样才能知道电子表格类是否有问题?

这是作曲家加载的内容:

"phpoffice/phpspreadsheet" : "dev-develop",

这是一个问题,因为它有这个开发版本吗?在这一点上,我很困惑,因为我玩过文件的路径,我在文件夹中手动更改了权限,我检查了服务器日志,现在我什么都不知道了。

这里文件夹中的权限:

在此处输入图像描述

任何有用的建议表示赞赏。

4

1 回答 1

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功能。_

我无法回答您的第二个问题,但这里有一些建议(好的,问题……):

  • 您的(生产)服务器响应的状态码是什么?
  • www-data您是否具有从服务器帐户( ?)读取/写入数据文件的权限?
  • 是否phpspreadsheet依赖于任何 PHP 扩展?您是否在开发机器和服务器上都安装了它们?
  • 服务器上安装了什么 PHP 版本?您是否或phpspreadsheet使用了该版本可能不可用的任何功能?
  • 尝试不通过 Apache 运行您的项目,而是使用 PHP 的内置服务器(但不要长期这样做)并尝试重现该问题。
于 2017-08-01T16:10:48.210 回答