我遇到一个奇怪的问题上传通过PHP大文件时(通过Drupal的,尽管这不是问题)。
基本上,我的文件上传失败的原因的post_max_size被限制达到,即使本地指令设置为96M,而该文件是25M。
我保证一切是正确的,包括max_input_time
, max_upload_filesize
和IIS FastCGI的空闲时间。 这些都是很多大不是问题。
我重写post_max_size
通过Plesk,这(我相信)存储在注册表值的改变指令。 运行phpinfo()函数域上显示所有的指令...... 96M本地,12M掌握正确的地方和主值。
非常奇怪的是,当我改变了主人post_max_size
在php.ini从12M到96M(并确保更改已生效), 它工作正常! 更改主值恢复为12M(并保持96M的本地值)立即导致上传到再次失败。
这是PHP的一个bug,还是我做错了?
事实证明,在Windows上,你只能设置标记INI指令PHP_INI_USER
每个目录。 不幸的是, upload_max_filesize
和post_max_size
都PHP_INI_PERDIR
。 从在PHP文档http://php.net/manual/en/configuration.changes.php
该目录的设置会从该目录或它的任何子目录的脚本是活动的。 项中的值应该具有PHP配置指令和字符串值的名称。 值中的PHP常量不被解析。 但是,只有在PHP_INI_USER多变的配置值可以用此方法设定,PHP_INI_PERDIR的值就不行。
因此,即使具有的Plesk改变这些指令的接口,即使phpinfo()
对他们拾起, 他们什么也不做改变实际的最大上传大小。 Plesk中不应该让你改变那些对Windows和phpinfo()
不应该报告的变化,但你可以做什么。
检查PHP的upload_tmp_dirpost_max_size以及在php.ini和任何覆盖的upload_max_filesize(本地php.ini或任何的.htaccess为例)
编辑:它应当注意,phpinfo()函数不能在用于确定是否有任何超驰将是请求期间可用的,因为它会响应期间处理(又名当文件上传发生)的依据。
我Plesk中也有类似的问题。 已编辑任何的Plesk中的模板? 我知道,当它运行的cron作业可能会丢失某些配置的编辑,如果你没有通过Plesk做他们。
但是关于.htaccess文件是什么? 您还可以设置这些限制有,并且,根据您的Plesk的配置,可以在更好的地方来进行这些更改。