2017-07-31 159 views
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"; 

我已经在非相对路径的文件夹,因为基本路径()不工作,它不会给任何结果。

echo语句只是因为服务器日志不会给出任何错误。在我的开发系统上,我在生产系统上得到了echo文本,错误似乎出现在load语句中。

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

第二个问题:我怎样才能得到一个想法?电子表格类有什么问题吗?

这是作曲家装什么:

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

它是一个问题,因为它有这个开发版本?在这一点上,我很困惑,因为我玩文件的方式,我在文件夹中手动修改了权限,我检查了服务器日志,现在我没有任何想法了。

以下文件夹中的权利:

enter image description here

知道的任何有帮助的建议。

回答

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

我不能回答你的第二个问题,但这里有一些建议(OK,问题...):

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