【问题标题】:PHP Uploads Deleted after 2.0GB2.0GB 后删除的 PHP 上传
【发布时间】:2014-03-14 20:32:27
【问题描述】:

我检查了所有的线程,似乎没有一个与这个问题匹配。

我用谷歌浏览器上传,上传4GB+文件没有问题

服务器是 Apache 2.2.15 和 PHP 5.3.3 文件系统是 ext4,我有一个 2.5GB 的交换文件,所以我知道文件系统不是问题。

PHP.ini 设置:

max_execution_time = 7200
max_input_time = 7200
upload_max_filesize = 5000M
post_max_size = 5000M  
memory_limit = 2750M

当 upload_max_filesize 为 3G 时,它具有相同的行为。 当我将 post_max_size 留在 8M 时也有相同的行为 内存甚至没有用完整个 700MB 的硬件内存,更不用说触摸交换了,所以我知道它不是内存。

上传整个 2.5GB 文件只需要大约 10 分钟左右,但每次上传到 83% 时文件就会消失。

我用du /tmp 观看它,它达到了 2.0GB,并且在达到 2.1GB 之前总是“消失”

文件系统是 ext4,我有一个 2.5GB 的交换文件,所以我知道文件系统不是问题。

它总是在同一个地方发生。 error_log 中没有错误,没有任何显示,它只是删除了临时文件,当脚本尝试对其执行操作时,$file['tmp_name'] 中没有任何内容,因为它删除了文件。

在亚马逊 AWS 上运行 RHEL 6.4

有什么想法吗?

【问题讨论】:

  • 你有htaccess或httpd.conf吗?添加这些php_value upload_max_filesize 5000Mphp_value post_max_size 5000M
  • 没有区别。它似乎在 32 bin 整数的大小上失败了。奇怪,因为 phpinfo() 报告了正确的设置大小。我要尝试从源代码编译,天哪,这会很糟糕
  • 也许亚马逊对上传有一个覆盖设置。(疯狂猜测)可以在单个 PUT 中上传的最大对象为 5 GB,不确定这与 post..weird 有何不同
  • 我确定这是 32 位 int 限制,这就是它每次都死掉的地方。即使PHP_INT_MAX 是 9223372036854775807 所以我不明白为什么 PHP 会在 32 位 int 限制下中断。如果不清楚,这是一个 64 位操作系统
  • 分割不是一个选项?

标签: php amazon-web-services


【解决方案1】:

尝试为post_max_size 设置一个大于upload_max_filesize 的值。

【讨论】:

    猜你喜欢
    • 2015-01-06
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 2013-04-04
    • 2012-04-06
    • 1970-01-01
    相关资源
    最近更新 更多