ini_set没有';t覆盖php设置


ini_set doesn't overwrite php settings

我正在尝试上传更大的文件,所以我在php代码中设置了这个

    ini_set('upload_max_filesize', '1000M');
ini_set('post_max_size', '1100M');
ini_set('memory_limit', '1200M');

但是$_POST和$_FILES是空的。但当我更改php.ini设置时,它就起作用了。为什么它不在飞行中改变设置?

在PHP启动后更改这些设置为时已晚。

  • upload_max_filesize-上传发生在运行PHP脚本和执行ini_set()之前
  • post_max_size-同样

即使您可以更改memory_limit(取决于服务器配置),如果您期望上传这么大的内容,那也太晚了。

参见ini_set()和http://www.php.net/manual/en/ini.list.php了解更多信息。

看看这些:

http://www.php.net/manual/en/ini.list.php

http://www.php.net/manual/en/configuration.changes.modes.php

阅读后,您可以使用ini_set修改的选项似乎只有memory_limit。其他2个可在php.ini文件、httpd.conf、.htaccess或每个目录的.user.ini文件中配置。

也就是说,如果你想更改这些值,你必须有权访问服务器的配置!在剧本里你是负担不起的!

每个脚本都不允许更改前两个设置,但即使它们,它仍然无效,因为在运行脚本之前,必须处理文件/POST数据,这意味着设置将没有机会生效。