【问题标题】:Uploading large file (45MB) via AJAX failing通过 AJAX 上传大文件 (45MB) 失败
【发布时间】:2015-05-27 07:24:41
【问题描述】:

我正在尝试通过 AJAX 上传文件。正在成功上传约 10MB 的小文件。

但是,当我尝试上传较大的文件时,它会失败并显示以下消息:

内部服务器错误

服务器遇到内部错误或配置错误,并且 无法完成您的请求。

请联系服务器管理员 webmaster@.com 并告知 错误发生的时间,以及您可能做过的任何事情 这可能是导致错误的原因。

有关此错误的更多信息可能在服务器错误中可用 记录。

此外,在执行过程中遇到 500 Internal Server Error 错误 尝试使用 ErrorDocument 来处理请求。

我在 Dreamhost 上使用 Laravel 5

我到处都放了调试信息,但似乎我的 PHP 代码根本没有被执行。另外,error.log 中也没有任何信息。

我检查了php.ini 的以下设置:

max_execution_time 30
max_file_uploads 20
post_max_size 500M
upload_max_filesize 500M

最初,我将/tmp folder 安装在一个分区大小为100MB 的地方。当时error.log说"modsecurity: input filter failed writing 8192 bytes to temporary file" 所以我将/tmp文件夹的位置更改为我的主文件夹,以消除大小限制,但不起作用。

这是当前的行为: 文件上传显示 100%。 然后请求等待一段时间而不会导致日志。 一段时间后,返回上述错误信息。

让我知道需要哪些进一步的信息。

非常感谢!

【问题讨论】:

  • 500 Internal Server 表示您尝试运行的页面中有 php 错误
  • 我明白这一点。这就是为什么我包含了实际的 error.log 消息 :) 我从 Laravel 管理 404 等。我无法调试的是文件上传。
  • 您尝试上传的 tmp/ 目录是否已满?我认为 ModSecure 对 tmp 目录的文件大小限制为 128MB,以防止文件系统被填满。
  • 我已经完全清空了。
  • 要更新,error.log 现在显示错误!我不知道它什么时候开始显示错误。最近的错误是:ModSecurity: Input filter: Failed writing 1452 bytes to temporary file (rc 200)

标签: php ajax apache laravel-5 fastcgi


【解决方案1】:

对于此类问题,您应该使用 php.ini 的几个参数。

  1. max_execution_time
  2. max_input_time
  3. post_max_size
  4. upload_max_filesize

尽量将 max_execution_time 和 max_input_time 保持为零 (0)。

它不会将您的执行时间限制为 30 秒。

希望这会有所帮助!

【讨论】:

  • 好的。我将尝试max_execution time 和 input_time 为 0。
  • max_execution_time 更改为0。将max_input_time 更改为-1 我认为post_max_sizeupload_max_size 的值对于一个45MB 的文件来说已经足够了。 error.log 中仍然出现以下错误:ModSecurity: Input filter: Failed writing 1452 bytes to temporary file (rc 1144)
  • 是的,我们在问题的 cmets 中正在经历类似的过程! :D 在我获得更改 mod_security 配置的写入权限之前,我被困住了
猜你喜欢
  • 2016-07-29
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
  • 2012-05-31
  • 1970-01-01
相关资源
最近更新 更多