更改最大上传文件大小

时间:2010-02-02 14:00:47

标签: php

我在PC上托管了一个我无法访问的网站。我有一个上传表单,允许人们上传最大30MB的mp3文件。我的服务器端脚本是用PHP完成的。

每次尝试上传文件时,都会收到错误声明文件超出允许的最大大小,因此我需要增加大小。我在网上的研究建议更改我无法访问的.htaccess文件,这样就行不通了。其他人建议我应该向我的root添加一个自定义php.ini文件,但该文件不起作用。还有其他建议吗?

19 个答案:

答案 0 :(得分:813)

您需要在php.ini中设置upload_max_filesizepost_max_size的值:

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

修改php.ini文件后,需要重启HTTP服务器以使用新配置。

如果你不能改变你的php.ini,那你就不走运了。您无法在运行时更改这些值;在执行到达ini_set的调用时,上传大于php.ini中指定值的文件将失败。

请参阅Description of core php.ini directives

答案 1 :(得分:135)

您可以通过.htaccess文件进行更改。

.htaccess个文件存储在.php个文件所在的目录中。他们修改该文件夹和所有子文件夹的配置。您只需在您选择的目录中创建.htaccess文件即可使用它们(如果存在则修改它)。

以下内容可以让您增加上传限制(如果服务器提供商允许通过.htaccess更改PHP配置)。

php_value upload_max_filesize 40M
php_value post_max_size 42M

答案 2 :(得分:55)

我遇到了同样的问题,我创建了一个.user.ini文件并将其放在上传脚本所在的目录中。在该文件中,我设置了以下两个值:

  upload_max_filesize = 40M

  post_max_size = 40M

它对我很有用!

答案 3 :(得分:51)

您也可以使用ini_set function(仅适用于5.3以下的PHP版本):

ini_set('post_max_size', '64M');
ini_set('upload_max_filesize', '64M');

就像@acme说的那样,在php 5.3及以上版本中,这个设置是PHP_INI_PERDIR指令,因此不能使用ini_set设置它们。您可以改用user.ini。

答案 4 :(得分:42)

要找到ini文件,请先运行

php -i | grep -i "loaded configuration file"

然后打开文件并更改

upload_max_filesize = 2M
post_max_size = 2M

用您想要的尺寸替换2M,例如100M。

我有一篇关于更多信息的博客文章http://www.seanbehan.com/how-to-increase-or-change-the-file-upload-size-in-the-php-ini-file-for-wordpress

答案 5 :(得分:38)

我过去也有同样的问题..我通过.htaccess文件

修复了它

当您通过.htaccess对php configration进行更改时,您应该将配置放入 IfModule标记,内部服务器错误将会出现。

这是一个例子,它适用于我:

<IfModule mod_php5.c>
   php_value upload_max_filesize 40M
   php_value post_max_size 40M
</IfModule>

如果你想了解更多,这是php referance。 http://php.net/manual/en/configuration.changes.php

答案 6 :(得分:12)

我通过在PHP文件脚本所在的目录中创建一个名为.user.ini的文件解决了这个问题(这意味着此目录中的任何PHP脚本都会获得新的文件大小限制)

.user.ini的内容是:

upload_max_filesize = 40M
post_max_size = 40M

答案 7 :(得分:5)

我遇到了同样的问题。我尝试了三种通常建议的方法:

  1. 的functions.php
  2. 的php.ini
  3. 的.htaccess
  4. 无论哪个解决了我的问题。我正在使用godaddy并遇到了一个建议的解决方案:

    1. 进入虚拟主机,然后管理
    2. 软件下,选择选择PHP版本
    3. 以字体颜色选择表格右上角的切换到PHP选项:蓝色
    4. 在最底部,您可能会 upload_max_filesize = 2M
    5. 现在,随时改变它
    6. 请务必点击保存按钮!
    7. 现在转到您的wp-admin面板,选择媒体然后添加
    8. 瞧!现在您有不同的最大上传文件大小:)

答案 8 :(得分:4)

好吧,我想在这里加2美分。

我正在使用共享虚拟主机,我多次解决这个问题,试图自己解决它,但无济于事。 最后,我设法通过检查各种网络资源并联系我的托管服务提供商来解决它。我的问题是“如何在共享虚拟主机中更改php值memory_limit?”,“如何在共享虚拟主机中更改php值upload_max_filesize?”,“如何更改php值{{1}在共享虚拟主机中?“,”如何在共享虚拟主机中更改php值max_input_vars?“,”如何在共享虚拟主机中更改php值max_execution_time?“通过配置或更改php.ini或max_input_time文件等等。我试图改变它们但问题出现了。最后我联系了我的托管服务提供商,事实证明我将我的php设置为native,他们将其更改为php 5.6,这是他们的答案:

  

“您的PHP设置为'本机'模式,这意味着您无法覆盖   那些价值观。我已经把你变成了'5.6',所以你应该很好   去“。

之后我通过ftp Filezilla连接了我的网站,也不要忘记让你的ftp服务显示隐藏文件,你的本地计算机也这样做,因为.htaccess文件隐藏在我的本地笔记本电脑中在我的网站上。它在public_html文件夹中可用,我刚下载它并将以下代码添加到文件的末尾,然后将其上传回服务器:

.htaccess

enter image description here

enter image description here

enter image description here

enter image description here

enter image description here

暂时一切正常,如果你们中的任何一个克服了一些问题,请写在这里警告我,以便我可以更改上面显示的代码。顺便说一下,我还上传了一些显示变化的图片。

还有一件事我差点忘了在你的共享虚拟主机服务上提到ZipArchive安装,我通过我的cpanel进入php设置,点击php选择器扩展然后点击zip部分,这就是所有。< / p>

感谢。

PS:我对良好做法持开放态度,如果你看到任何不良做法,请告诉我,我会尝试改变它们。感谢。

答案 9 :(得分:3)

非这些解决方案对我有用!! (默认情况下已设置为32M)。大多数情况下问题是max_allowed_packet

我正在使用localhost并使用MAMP

这是解决方案;

<强> 1。如果您没有my.ini

添加

--max_allowed_packet=168435456

...\MAMP\bin\startMysql.sh

<强> 2。如果你有my.ini

下的

[mysqld]

添加

max_allowed_packet=100M

完成!

答案 10 :(得分:3)

也许这应该是对@ seanb123和@Fredrick Gauss评论他评论的评论,但对于我在Drupal 8.1中使用PHP 7,我需要修改的文件位于:

/etc/php/7.0/apache2/php.ini

我修改了其他四个php.ini文件,包括我的系统名为&#34;加载配置文件&#34; (php -i | grep -i "loaded configuration file")和在info.php页面上找到的那个,但没有一个帮助。从2012年开始,在网站上发现了发现正确路径的关键。他们说路径"/etc/php5/apache2/php.ini"甚至已经被弃用了,但它给了我一个线索,在哪里可以找到它。对于PHP7,它与PHP5略有不同,但概念是相同的。

也许这会帮助一些像我一样无助的笨蛋。

话虽如此,在我的案例中对OP的回答是,拥有管理员权限的人必须这样做。

帮助我的网站:http://www.evilbox.ro/linux/remove-ispconfig-maximum-upload-size-of-2m-for-wordpress/

这也在这里解决:Import file size limit in PHPMyAdmin

编辑: 我给自己的笔记的全文:

  

要更改最大上传大小,请修改upload_max_filesize和   [如果需要?] /etc/php/7.0/apache2/php.ini中的post_max_size(或者   旧版本:/etc/php5/apache2/php.ini)

     

/etc/init.d/apache2 restart

再次编辑: 由于您要导入大文件,因此可能需要更改处理它们的超时。在我的例子中,文件命名为&#34; config.default.php&#34;在/usr/share/phpmyadmin/libraries/config.default.php找到变量$cfg['ExecTimeLimit'] = 300; 例如,我将我改为900以获得巨额进口。 之后你需要重启apache

答案 11 :(得分:3)

我多次注意到站点机智共享主机不允许更改php.ini文件中的设置。一个也根本不能包装.htaac​​cess文件。在这种情况下,人们可以尝试以下事情

ini_set('upload_max_filesize', '10M');
ini_set('post_max_size', '10M');
ini_set('max_input_time', 300);
ini_set('max_execution_time', 300);

答案 12 :(得分:3)

答案有点不完整,你要做的3件事

在你的php安装的php.ini中(注意:取决于你是想要它用于CLI,apache还是nginx,找到合适的php.ini进行操作。对于nginx,它通常位于/etc/php/7.1/fpm其中7.1取决于你的版本。对于apache通常/etc/php/7.1/apache2

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

或设置其他值。如果您安装了apache,则重新启动/重新加载apache;如果您使用nginx,则重新启动/重新加载apache for php-fpm

答案 13 :(得分:2)

由于在全球范围内进行更改有些冒险,因此我尝试为单个脚本 big_file_upload.php增加最大上传值。由于某些原因,ini_set并没有帮助。经过一番研究,我想出了这个。将其放在.htaccess中(除非通过AccessFileName更改了名称)

<If "%{REQUEST_URI} == '/subfolder/big_file_upload.php'" >
php_value upload_max_filesize 200M
php_value post_max_size 200M
</If>
<Else>
php_value upload_max_filesize 1M
php_value post_max_size 1M
</Else>

为我工作。

答案 14 :(得分:1)

有了18753933 repeats: 2 18771982 is repeated: 1 ,一切都很简单

  

WAMP图标> PHP> PHP设置> upload_max_filesize = nM> n =(2M,4M,8M,16M,32M​​,64M,128M,256M,512M或选择(自定义))。

服务会自动重新加载。

但是,如果您确实对服务器没有访问权限,则可能需要探索编写WAMP API。

答案 15 :(得分:0)

我也遇到了这个问题,并通过在/etc/nginx/nginx.conf中设置此设置来解决了该问题

client_max_body_size 0;

0,如无限制。

而且,如果您有一个使用nginx运行的反向代理,则该服务器也应具有此设置(这是我在这里遇到的问题)

答案 16 :(得分:0)

如果您编辑了正确的php.ini文件,重新启动了Apache或Nginx,但仍然无法正常工作,那么您也必须重新启动 php-fpm

sudo service php-fpm restart 

答案 17 :(得分:0)

  1. 打开 php.ini 文件。

  2. 在php.ini中搜索upload_max_filesize等关键字。

  3. 然后更改文件的大小。

    upload_max_filesize = 400M

  4. 需要更改最大帖子值。

    post_max_size = 400M

答案 18 :(得分:0)

花了几个小时后,我几乎浏览了所有帖子,但没有运气。并最终通过这些步骤解决了问题。这可能是奇怪的解决方案,但对我有用。

第一步:在/etc文件夹或/文件夹下运行cmd找到php.ini文件:

grep -rl "post_max_size" | xargs ls -lrth

这里我使用 post_max_size 关键字来搜索 /etc 文件夹中的“php.ini”文件,但在某些系统中,您可以在 /var/www/html 或 /var/www/wordpress 文件夹中找到它。

我们在互联网上有多个帖子,好像 php.ini 文件不存在于 WordPress 文件夹中,那么您可以创建,但在我的情况下不起作用。

第 2 步:

编辑 php.ini 文件并像这样更改值。

post_max_size = 100M   
upload_max_filesize = 100M

在上面你可以根据你的要求设置任何值。

第 3 步:

重启httpd或Nginx或apache和PHP服务,或者按照设置重启web服务。

对我来说 httpd 和 php-fpm 服务重启在 centos 8 中工作:

service httpd restart
service php-fpm restart