PHP7在Linux上导出Excel解决ERR_EMPTY_RESPONSE方法
106 浏览量
更新于2024-08-28
收藏 531KB PDF 举报
"在使用PHP7.1版本和PHPExcel 1.8.1在Linux环境中导出Excel时遇到ERR_EMPTY_RESPONSE错误。此问题通常与PHP的配置或输出缓冲有关,而不是实际的代码逻辑。以下是一种可能的解决方案和相关知识点。"
在PHP中,当尝试导出Excel文件并出现`ERR_EMPTY_RESPONSE`错误时,这通常意味着服务器没有正确地返回任何内容,可能是由于输出缓冲区的问题或者是服务器配置限制了输出。在PHP7环境下,特别是从本地环境(如Windows)迁移到Linux生产环境时,这种问题更为常见。
首先,确保你的PHPExcel库是最新的。虽然你提到使用的版本是1.8.1,这是一个较旧的版本,但考虑到作者已三年未更新,你需要确认此版本是否与PHP7.1兼容。不过,从描述来看,你已经将旧插件替换为了这个版本,这是解决问题的第一步。
在代码方面,关键在于如何正确设置HTTP头和输出Excel内容。以下是一个正确的示例:
```php
$filename = "模板文件" . date("YmdHis") . rand(1000, 9999);
$filename = iconv("utf-8", "gb2312", $filename);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/vnd.ms-excel");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition: attachment; filename="' . $filename . '.xls"');
header("Content-Transfer-Encoding: binary");
// 保存并输出Excel文件
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
```
这段代码首先设置了适当的HTTP头,用于指示浏览器以Excel文件下载的方式处理响应。然后,通过`save('php://output')`将生成的Excel内容直接输出到HTTP响应流中。
检查PHP配置也很重要。确保`output_buffering`在php.ini中被禁用或者设置为合适的值(例如0表示关闭),因为这可能导致内容无法及时输出。另外,如果你使用的是Apache服务器,检查`.htaccess`文件中是否存在阻止输出的Rewrite规则。
在Linux环境下,还应关注安全配置,比如`open_basedir`限制,它可能阻止了文件的写入或读取,导致Excel导出失败。确保你的脚本有权限访问存储临时文件或缓存的目录。
此外,考虑使用更现代的库,如`phpspreadsheet`,它是PHPExcel的替代品,支持更多的特性且持续维护。这可能会解决与旧版库相关的兼容性问题。
解决`ERR_EMPTY_RESPONSE`错误涉及检查PHP版本兼容性、HTTP头设置、服务器配置和库的使用。通过上述步骤和调整,你应该能够成功地在Linux环境下导出Excel文件。如果问题仍然存在,可能需要进一步调试服务器日志或调整服务器配置。
2021-05-13 上传
2018-07-17 上传
2020-06-21 上传
2023-07-09 上传
2023-09-06 上传
2021-01-10 上传
2023-08-16 上传
2023-09-17 上传
2023-09-17 上传
weixin_38519763
- 粉丝: 5
- 资源: 922
最新资源
- 网络化
- ignite-nodejs-desafio-03
- bootstrap-swig-stylus-gulp-boilerplate:包含 Bootstrap、Swig、Stylus、Gulp 和一些基本导入的最小种子,如 Google Webfonts、FontAwesome 等
- web_app_example
- 最终项目:绘图效率和耐力
- Final-JS_Project:国际邮政服务
- 数码宝贝游戏易语言源码-易语言
- Music-App:使用HTML + CSS + Javascript制作的简单动画音乐应用程序
- my-JS-Project:这是一个JavaScript项目存储库
- VisualVM.zip
- desdevdemo:该网站用于展示2021年DES&DEV训练营参与者建造的项目
- react
- pro-javascript-ria-techniques:支持 Apress 书籍“Pro JavaScript RIA 技术”的代码清单
- kendrick-keits
- fashiondata
- csb_js_file_conversion:用于Codesandbox的Javascript文件上传器skelton