编程语言
首页 > 编程语言> > PHP post_max_size本地值被Plesk / IIS上的主值覆盖?

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

作者:互联网

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

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

我确保其他一切都是正确的,包括max_input_time,max_upload_filesize和IIS FastCGI空闲时间.所有这些都很大而不是问题.

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

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

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

解决方法:

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

The settings for the directory would be active for any script running from this directory or any subdirectory of it. The values under the key should have the name of the PHP configuration directive and the string value. PHP constants in the values are not parsed. However, only configuration values changeable in PHP_INI_USER can be set this way, PHP_INI_PERDIR values can not.

因此,即使Plesk有一个更改这些指令的界面,即使phpinfo()选择它们,它们也无法改变实际的最大上传大小. Plesk不允许你在Windows上更改那些,而phpinfo()不应该报告更改,但你能做什么.

标签:php,iis,plesk
来源: https://codeday.me/bug/20190630/1332436.html