【发布时间】:2013-07-21 12:16:59
【问题描述】:
我的页面上有一个指向"basedir/Controls/ProcessExcel.php"的链接
ProcessExcel.php 在basedir 中生成一个名为Rapport.xls 的.xls 文件。所以路径是basedir/Rapport.xsl。
问题是当我在完成生成Rapport.xls后重定向到ProcessExcel.php时,我无法从服务器下载Rapport.xls。
这是ProcessExcel.php的代码
if($cn->DBConnexion())
{
//Format stuff here, do stuff there...
//This is Validation on my SQLDATA, etc...
}
//Create the .xls file
$writer = new PHPExcel_Writer_Excel5($phpe);
//Save the .xls file
$writer->save("../Rapport.xls");
$fullPath = '../Rapport.xls';
if (file_exists($fullPath)) {
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header('Content-Disposition: attachment;filename="Rapport.xls"');
header("Content-Transfer-Encoding: binary ");
readfile($fullPath);
exit();
}
它给了我错误代码 500:
网站在检索时遇到错误 http://CantPOSTRealURLSorry.com/basedir/Controls/ProcessExcel.php。 它可能已关闭或配置不正确。
编辑: 日志中的错误说:
PHP 致命错误:未捕获的异常 'PHPExcel_Writer_Exception' 带有消息'无法打开 ../Rapport.xls。它可能正在使用或受到保护。在 C:\basedir\Classes\PHPExcel\Shared\OLE\PPS\Root.php:93 堆栈跟踪: 0 C:\inetpub\wwwroot\solutions_spb\Classes\PHPExcel\Writer\Excel5.php(226): PHPExcel_Shared_OLE_PPS_Root->save('../Rapport.xls') 1 C:\inetpub\wwwroot\solutions_spb\Controls\ProcessExcel.php(224): PHPExcel_Writer_Excel5->save('../Rapport.xls') 2 {主要} 在第 93 行的 C:basedir\Classes\PHPExcel\Shared\OLE\PPS\Root.php 中抛出
编辑 2: 尝试使用另一个脚本发送电子邮件时,我遇到了基本相同的错误。我认为这两个问题可能是相关的。
【问题讨论】:
-
检查您的日志是否存在真正的错误,可能是权限问题
-
这是一个权限问题,它说:PHP 致命错误:未捕获的异常 'PHPExcel_Writer_Exception' 带有消息'无法打开 ../Rapport.xls。它可能正在使用或受到保护。在 C:\basedir\Classes\PHPExcel\Shared\OLE\PPS\Root.php:93 堆栈跟踪:#0 C:\inetpub\wwwroot\solutions_spb\Classes\PHPExcel\Writer\Excel5.php(226): PHPExcel_Shared_OLE_PPS_Root- >save('../Rapport.xls') #1 C:\inetpub\wwwroot\solutions_spb\Controls\ProcessExcel.php(224): PHPExcel_Writer_Excel5->save('../Rapport.xls') #2 {main } 在第 93 行的 C:\basedir\Classes\PHPExcel\Shared\OLE\PPS\Root.php 中抛出
-
@DevZer0 您能否发表您之前的评论作为答案?我会选择它。
-
谢谢你,我照你说的做了