我在 Debian Squeeze 上使用 Apache + PHP 5.3.3-7,从存储库安装。Debian Squeeze 中的 PHP 发行版包含 Suhosin 补丁。我在上传大于 cca 4 MB 的文件时遇到问题,一些不可见的限制阻止 PHP 接受上传。
我php.ini
有:
- 设置 upload_max_filesize = 50M
- 设置 post_max_size = 50M
- 设置内存限制 = 256M
- 设置最大执行时间 = 120
- 设置最大输入时间 = 120
在suhosin.ini
:
- suhosin.内存限制 = 256M
- suhosin.post.max_value_length = 50000000
- suhosin.request.max_value_length = 50000000
- suhosin.post.max_vars = 200000
- suhosin.request.max_vars = 200000
我实际上怀疑最后两个根本不重要,但我被建议也增加它们。
我确信 PHP 确实正确加载了配置值,因为它phpinfo()
符合我的预期。我期望能够上传最大 50MB 的文件,但上传 4MB 的文件已经失败。正常的 PHP 每个站点日志中没有记录任何错误。而且我确信有足够的空间来保存上传的文件。
似乎还有其他一些不可见的限制阻止我上传文件。这可能是什么?也许是 Apache 本身?虽然从未听说过这个限制。
我花了将近一周的时间来解决此问题,我和客户都感到很绝望。欢迎提供任何提示。
答案1
首先,这似乎是错误的。假设是打字错误,但无论如何都会指出:
set upload_max_filesize = 5OM
那应该是0
正确的吗?
set upload_max_filesize = 50M
memory_limit
您的帖子好像也是空的?
无论如何,除了这些设置之外,您还应该进行调整max_execution_time
,max_input_time
以便上传本身不会超时。取决于速度和连接,但正确掌握上述所有设置应该可以让您上传 50MB 文件而不会出现太多问题。