生产系统上的差异
问题描述:
我有一个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",
它是一个问题,因为它有这个开发版本?在这一点上,我很困惑,因为我玩文件的方式,我在文件夹中手动修改了权限,我检查了服务器日志,现在我没有任何想法了。
以下文件夹中的权利:
知道的任何有帮助的建议。
答
答案(希望)第一个问题:如果你的应用是基于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的内置服务器(但不要做它长期)并尝试重现该问题。