$ _POST - 无法上传大于1mb的图片

时间:2014-03-16 12:03:24

标签: php post upload

我的网站托管服务(Dreamhost)允许我创建一个'phprc'文件并在其中放置自定义变量:

upload_max_filesize = 64M
post_max_size= 64M
max_execution_time = 500
max_input_time = 500
memory_limit = 128M

我确信上面的代码可以正常工作,因为我的phpinfo()文件显示了我希望它们设置的所有变量。

但是,每当我使用$ _POST尝试上传大于1mb的图像(所有文件都是.jpg)时,我都会收到413错误。我在716kb上成功上传的最大文件,虽然我不知道任何大小的失败文件。

我得到的错误:

Request Entity Too Large

The requested resource
/media/function-image-upload.php
does not allow request data with POST requests, or the amount of data provided inthe request exceeds the capacity limit.

我花了很长时间试图解决这个问题,联系支持并做了各种各样的事情。我认为phpinfo()中的其他变量可能有问题。

我不知道该怎么办! :(

2 个答案:

答案 0 :(得分:2)

谢谢大家,但似乎这一切都是我的错误。

事实证明,我的主机默认启用了mod_security,这限制了上传到1mb。转过身来,现在一切正常!

为了将来参考,或者如果有人确实遇到这样的问题并最终拖网浏览HOURS无济于事:

关闭MODSECURITY!

特别感谢Ryan Vincent指出它,但我在muhaha之前解决了它:)

答案 1 :(得分:0)

最大文件上传大小是php.ini中的设置,由upload_max_filesize标识。

在我的13.10框上执行cat /etc/php5/cli/php.ini | grep -i file_返回

file_uploads = On
max_file_uploads = 20
upload_max_filesize = 5M //needs to be in {x}M format

托管服务提供商通常会将此设置设置为较低,以降低带宽和存储要求。另外,当你考虑它时,你就会发现异常,因为没有多少人需要将这么大的文件上传到非网络服务,例如Drive或Dropbox。

如果您有权访问php.ini文件,则修改它很简单。如果您不这样做,那么我建议您将托管计划移至VPS或使用Amazon AWS,linode droplet或heroku dyno。