【发布时间】:2014-09-26 19:06:35
【问题描述】:
我刚刚将一组代码从我的开发服务器上传到我的实时服务器,当我尝试保存任何内容时,PHPExcel 刚刚开始生成 500 错误。代码如下 (注意:这一切在开发服务器上运行良好,PHPExcel 和 Laravel 在两者之间为其他应用程序转换时运行良好)
$PHPExcel = new PHPExcel;
$filename = 'Companies_Export_'.Session::getId().'.xls';
$file = public_path().'/_assets/exports/'.$filename;
//$fp = fopen($file, 'w');
$objWriter = PHPExcel_IOFactory::createWriter($PHPExcel, 'Excel5');
$objWriter->save($file);
我已经删除了填充文件的代码,以防是文件大小问题。
我已经使用 fopen 来测试应用程序是否具有对目录的写入权限,并在正确的位置创建一个具有正确名称的新文件,所以这也很好。
我已尝试将文件名更改为“1.xls”,因此 Session::getId() 不是问题
如果我注释掉 $objWriter->save($file);行,一切正常,只是显然不保存,如果我把垃圾作为参数而不是合法的目录/文件名,它仍然只有 500 个,所以表明 PHPExcel 在编译文件或其他东西时必须失败?
我现在很茫然,无论我做什么它都不会显示错误,它只是抛出一个没有信息的 500 页面(详细的错误页面只是说 php fastcgi 进程意外退出或类似)
信息: PHP 版本 5.3.10 视窗服务器 2008 IIS 7.5
【问题讨论】:
-
当您打开文件进行写入,然后
PHPExcel尝试写入文件时,它可能被锁定。请不要让我们猜测问题并从日志文件中查找确切的错误。 -
laravel.log 不包含有关特定错误的信息
-
laravel 日志?查看 PHP 错误日志。在 debian 上使用 fpm,它在
/var/log/php5-fpm.log,使用 apache,它在/var/log/httpd/error.log或/var/log/apache/error.log等 -
将其改为使用 syslog,因此记录的错误为:错误应用程序名称:php-cgi.exe,版本:5.3.10.0,时间戳:0x4f2ae019 错误模块名称:php5.dll,版本:5.3.10.0,时间戳:0x4f2ae082 异常代码:0xc0000005 故障偏移量:0x00091818 故障进程 id:0x17cc 故障应用程序启动时间:0x01cfafd2bd36811f 故障应用程序路径:C:\Program Files (x86)\PHP5310\php-cgi.exe 故障模块路径:C:\Program Files (x86)\PHP5310\php5.dll 报告 ID:08be4c4f-1bc7-11e4-a09c-001cc4e2ea5c
-
我认为是windows+php的问题,命令的组合会导致这些错误。 "I updatet my php form 5.3.10 to 5.3.12 and problem was solved."(搜索“故障偏移量:0x00091818”)。
标签: php laravel laravel-4 phpexcel