【问题标题】:difference on production system生产系统差异
【发布时间】:2018-01-07 03:45:43
【问题描述】:

我有一个带有控制器的 ZF3 项目,它打开 excel 文件并将它们与将打开的模板进行比较。

在我的开发笔记本 (xampp) 上一切正常,在我的生产系统 (ubuntu) 上,phpspreadsheet 会导致错误(我认为是错误)。

这里是我的代码中的一个 sn-p:

$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() 不起作用,它不会给出任何结果。

回显语句只是因为服务器日志不会给出任何错误。在我的开发系统上,我在生产系统上收到回显文本,错误似乎在加载语句中。

第一个问题:这里如何使用相对路径?

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

这是作曲家加载的内容:

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

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

这里是文件夹中的权限:

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

【问题讨论】:

    标签: zend-framework spreadsheet zend-framework3 phpspreadsheet


    【解决方案1】:

    回答(希望)第一个问题:如果您的应用程序基于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 扩展?您是否在开发机器和服务器上都安装了它们?
    • 服务器上安装了什么 PHP 版本?您或 phpspreadsheet 是否使用了该版本可能不可用的任何功能?
    • 尝试不通过 Apache 运行您的项目,而是使用 PHP 的内置服务器(但不要长期这样做)并尝试重现该问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      相关资源
      最近更新 更多