在PHP上更改upload_max_filesize


84

我使用的是PHP 5.3.0,并且遇到了可能是错误的情况(在这种情况下,我将进行报告)或可能是我-因此,我要求确定。

运行此代码时:

<?php
ini_set('upload_max_filesize', '10M');
echo ini_get('upload_max_filesize'), ", " , ini_get('post_max_size')

我最终得到:

2M, 8M

尽管我的php.ini将这些设置为更高:

upload_max_filesize = 10M
post_max_size = 10M

(仅发生一次)

因为错误是在设置值以及在php.ini中设置之后发生的,所以我倾向于认为这是一个错误。谁能确认或指出我的问题所在?

更新:看起来像重新启动Apache修复了此问题-我一直认为,如果您更改了php.ini,则不需要重新启动它。


9
“我一直认为,如果您更改了php.ini,则不需要重新启动它。” PHP CLI立即获取更改,因为它会在每次调用时解析php.ini。mod_php一次解析php.ini -当Apache启动时。
Frank Farmer

我最近有同样的问题。如果不重新启动Apache,则upload_max_filesize不会生效。我使用的是PHP 5.2.9。重新启动后,一切正常。
哈鲁克

为了避免完全重新启动apache,只需使用“ sudo服务apache2 reload”
user1048839 2015年

Answers:


68

您不能使用速记符号在PHP.ini之外设置配置值。我认为当遇到错误的值时,它会回落到2MB作为已编译的默认值。

另一方面,我认为upload_max_filesize不能使用设置ini_set()。该“官方”列表中说,它是PHP_INI_PERDIR


10
您认为正确!您不能使用ini_set()设置upload_max_filesize,因为upload_max_filesize是PHP_INI_PERDIR类型,这意味着只能通过php.net
Marco Demaio 2010年

2
实际上,您可以在PHP.ini之外使用速记符号。您可以在中使用它.htaccess,也可以在中使用它ini_set。不过,也许不是所有版本。
保护者

70

您是否正在使用共享主机提供商?可能是主设置覆盖了您要更改的所有内容。您是否尝试过将它们添加到.htaccess中?

php_value upload_max_filesize 10M
php_value post_max_size 10M

1
不,这是我自己的机器上的Apache / PHP实例(如果相关,则为Windows)。我将尝试将它们添加到Apache配置中。
罗斯,2009年

5
更新:这确实会影响它(将它们更改为10),因此此方法有效。我仍然很困惑为什么它不能在php.ini或ini_set中工作。
罗斯,2009年

如果您无法访问php.ini,则+1这绝对是必经之路-非常感谢。
Alex Coplan

3
请注意,这仅适用于将PHP作为模块运行而不是作为CGI运行的Apache
ChrisV 2012年

我想说这是首选的方法,即使可以访问php.ini文件。允许您根据需要而不是全局设置来设置这些权限。
科比·杰克逊

42

由于我只是在共享主机上遇到此问题,并且无法将值添加到我的.htaccess文件中,因此我想与我共享解决方案。

我用它的值制作了一个ini文件。就那么简单:

制作一个名为“ .user.ini”的文件并添加您的值

upload_max_filesize = 150M
post_max_size = 150M

动臂,问题解决了。


为我工作!谢谢!
贾斯汀·普妮

4
“除了主要的php.ini文件之外,PHP还在每个目录中扫描INI文件,从所请求的PHP文件的目录开始,一直扫描到当前文档的根目录。” php.net/manual/en/configuration.file.per-user.php
直到

1
在wordpress网站上效果很好!谢谢!
avenged_badger

这很好用,因为我无法从.htaccess中进行操作。谢啦!
战略家

默认情况下,PHP每5分钟重新读取一次user.ini文件。因此,如果结果没有立即显示,请耐心等待
Andrey Yaremenko '19

10

我使用与加载应用程序的index.php脚本位于同一目录中的.user.ini文件来工作。这里是内容:

upload_max_filesize = "20M"
post_max_size = "25M"

这是Heroku的推荐解决方案。


5

这也可以通过apache配置进行控制。检查httpd.conf和/或.htaccess是否类似以下内容:

php_value upload_max_filesize 10M

0

如果您在本地服务器(例如wamp或xampp)中运行,请确保它使用的是您认为正确的php.ini。这些服务器通常默认为不在html docs文件夹中的php.ini。



0

默认情况下,PHP允许在服务器上最多上传2 MB文件。但是您可以根据自己的条件修改文件上传的最大大小。通过使用PHP配置文件php.ini,您可以在PHP中增加或减少文件上传的大小。

首先在您的文本编辑器中打开php.ini文件。搜索upload_max_filesize变量并指定要增加的大小。

搜索post_max_size变量并指定要增加的大小。

post_max_size = 128M

您可以从这里检查


-1

如果您即时使用ini_set,则可以在http://php.net/manual/en/ini.core.php上找到以下信息,例如,upload_max_filesize和post_max_size不能即时更改(PHP_INI_PERDIR)。

只有php.ini,.htaccess或vhost配置更改似乎可以更改这些变量。



-11

您也可以像这样在php文件中使用

<?php ini_set('upload_max_filesize', '200M'); ?>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.