PHP post_max_size本地值被Plesk / IIS上的主值覆盖?

时间:2012-07-30 21:50:41

标签: php iis plesk

我在通过PHP上传大文件时遇到了一个奇怪的问题(通过Drupal,虽然这不是问题)。

基本上,我的文件上传由于达到了post_max_size限制而失败,即使local指令设置为96M,文件是25M。

我确保其他所有内容都正确无误,包括max_input_timemax_upload_filesize和IIS FastCGI空闲时间。所有这些都很大而不是问题。

我通过Plesk覆盖post_max_size指令,我相信它会将更改存储在注册表值中。在域上运行phpinfo()会显示所有指令的正确本地值和主值... 96M本地,12M主站。

非常奇怪的是,当我将php.ini中的主post_max_size从12M更改为96M(并确保更改已生效)时,它正常工作!更改主值返回12M(并保持本地值为96M)会立即导致上载失败。

这是PHP中的错误,还是我做错了?

3 个答案:

答案 0 :(得分:2)

事实证明,在Windows上,您只能设置每个目录标记为PHP_INI_USER的ini指令。不幸的是,upload_max_filesizepost_max_size都是PHP_INI_PERDIR。来自http://php.net/manual/en/configuration.changes.php

的PHP文档
  

对于从此目录或其任何子目录运行的任何脚本,该目录的设置都将处于活动状态。密钥下的值应该具有PHP配置指令的名称和字符串值。不解析值中的PHP常量。 但是,只有PHP_INI_USER中可更改的配置值可以这种方式设置,PHP_INI_PERDIR值不能。

所以即使Plesk有一个更改这些指令的界面,即使phpinfo()选择了它们,也无法改变实际的最大上传大小。 Plesk不应该允许您可以在Windows上更改这些内容,phpinfo()不应报告更改,但您可以做什么。

答案 1 :(得分:1)

检查php.ini中的PHP的post_max_size和upload_max_filesize以及任何覆盖(例如本地php.ini或.htaccess)

编辑:应该注意的是,在请求期间(也就是文件上传发生时),确定是否有任何覆盖可用,不能依赖phpinfo(),因为它将在响应期间处理。

答案 2 :(得分:0)

我在Plesk遇到过类似的问题。你有没有编辑过Plesk的任何模板?我知道当它运行cron作业时,如果你没有通过Plesk进行编辑,你可能会丢失某些配置编辑。

但是你的.htaccess文件怎么样?您也可以在那里设置这些限制,根据您的Plesk配置,可以更好地进行这些更改。