一、首先开启错误显示

error_reporting(E_ALL);
ini_set(‘display_errors’, 1);

重新运行后,将会有报错信息(例如:内存溢出、文件不存在、类未定义)

二、常见导致 500 的原因与解决

1.PHPExcel 未正确加载

2.上传文件路径错误或文件未保存成功

如果你直接用 $_FILES[‘file’][‘tmp_name’] 读取,而临时文件已被删除,也会出错。

3.内存不足(最常见原因)

  • 读取大 Excel 文件时(尤其是 .xlsx),PHP 5.4 很容易内存溢出。
  • 读取 Excel 文件时消耗的内存与执行时间太大,超出了 PHP 5.4 默认限制(memory_limit = 128M)。
  • 超限:Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate XXXX bytes),display_errors 关闭后就报:500 Internal Server Error
  • 在 PHP 5.4 下建议使用 PHPExcel 1.8.0 或以下版本

解决:

ini_set(‘memory_limit’, ‘512M’);
set_time_limit(0);

4.缺少 Zip 扩展

.xlsx 文件其实是 ZIP 格式的,如果服务器没有启用 zip 扩展,会导致 500。

5.PHPExcel 版本太新

某些新版 PHPExcel 要求 PHP ≥5.6
在 PHP 5.4 下建议使用 PHPExcel 1.8.0 或以下版本。

作者 admin

百度广告效果展示