修改最大上传文件大小

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

每次我尝试上传文件时,都会收到一个错误,声称文件超过了允许的最大大小,因此我需要增加大小。我在网上的研究建议更改我没有权限访问的.htaccess文件,所以这行不通。其他人建议我应该添加一个自定义的php.ini文件到我的根目录,但这并不管用。还有其他建议吗?

1222218 次浏览

你需要在你的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,你就不走运了。您不能在运行时更改这些值;如果上传的文件大于php.ini中指定的值,那么在执行到ini_set时将会失败。

请看核心指令php.ini的描述

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

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

下面的代码可以提高上传限制(如果服务器提供程序允许通过.htaccess修改PHP配置)。

php_value upload_max_filesize 40M
php_value post_max_size 42M

你也可以使用报错功能(仅适用于PHP 5.3以下版本):

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

就像@acme说的,在php 5.3及以上的设置是PHP_INI_PERDIR指令,所以他们不能使用ini_set设置。你可以使用user.ini代替。

我过去也遇到过同样的问题。我通过.htaccess文件修复了它

当你通过.htaccess修改php配置时,你应该把配置放进去

. IfModule标签,否则内部服务器错误将出现

这是一个例子,对我来说很管用:

<IfModule mod_php5.c>
php_value upload_max_filesize 40M
php_value post_max_size 40M
</IfModule>
如果你想了解更多,这是php参考。 # EYZ0 < / p >

我有同样的问题,我创建了一个.user.ini文件,并把它放在上传脚本所在的目录中。然后在文件中我设置了这两个值:

  upload_max_filesize = 40M


post_max_size = 40M

这对我来说非常有效!

要定位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

这些解决方案都不适合我!!(默认设置为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

完成了!

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

.user.ini的内容是:

upload_max_filesize = 40M
post_max_size = 40M

好吧,我想在这里补充我的意见。

我正在使用共享网络托管,我解决了这个问题很多次,试图自己解决它,但无济于事。 最后,我通过查看各种网络资源和联系我的托管服务提供商来解决这个问题。我的问题是“如何在共享虚拟主机中更改php值memory_limit ?”,“如何在共享虚拟主机中更改php值upload_max_filesize ?”,“如何在共享虚拟主机中更改php值max_input_vars ?”,“如何在共享虚拟主机中更改php值max_execution_time ?”,“如何在共享虚拟主机中更改php值max_input_time ?”以及更多通过配置或更改php.ini或.htaccess文件。我试图改变他们,但问题出现了。最后我联系了我的主机提供商,结果我把我的php设置为原生,他们把它改成了php 5.6,这是他们的答案:

你的PHP被设置为“原生”模式,这意味着你不能覆盖 这些值。我已经把你的身高改成5.6了,所以你应该可以 走了。" < / p >

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

php_value memory_limit 256M
php_value post_max_size 256M
php_value upload_max_filesize 64M
php_value max_input_vars 1800
php_value max_execution_time 300
php_value max_input_time 300

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部分,这就是全部。

谢谢。

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

你需要检查三件事。

php.ini配置文件中的upload_max_filesizememory_limitpost_max_size

所有这三个设置都限制了PHP可以提交和处理的数据的最大大小。

通常post_max_sizememory_limit需要比upload_max_filesize大。


所以你需要检查三个变量总计,以确保绝对正确。

我也有同样的问题。我尝试了通常被建议的三种方法:

  1. 显然也
  2. php . ini
  3. . htaccess

如果这能解决我的问题就没有了。我正在使用godaddy,遇到了一个建议的解决方案:

  1. 先到虚拟主机,再到管理
  2. 软件下选择选择PHP版本
  3. 选择位于表格右上角的切换到PHP选项,字体颜色:蓝色
  4. 在底部的大部分部分,您可能会有upload_max_filesize = 2M
  5. 现在,请随意更改它
  6. 一定要点击保存按钮!
  7. 现在进入wp-admin面板,选择媒体,然后选择添加

瞧!现在你有一个不同的最大上传文件大小:)

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

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

我修改了大约四个其他的php.ini文件,包括一个我的系统称为“加载配置文件”(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/

这里也有地址:导入文件大小限制在PHPMyAdmin

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

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

.ini

/etc/init.d /输入重启

< p >编辑: 由于您正在导入大文件,您可能需要更改处理它们的超时时间。在我的例子中,名为“config.default.php”的文件位于/usr/share/phpmyadmin/libraries/config.default.php,变量为$cfg['ExecTimeLimit'] = 300; 比如,我把我的价格改成了900美元,因为我进口了一大笔商品。 然后你需要重新启动apache

很多次我都注意到共享主机的站点不允许更改php.ini文件中的设置。甚至根本不能创建.htaaccess文件。在这种情况下,人们可以尝试以下事情

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

答案有点不完整,你必须做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,请使用php-fpm

使用WAMP,这一切都非常简单

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

服务自动重新加载。

但是,如果您确实拥有对服务器的没有访问权,您可能想要尝试编写chunking API。

下面是如何做到这一点的图片。

enter image description here

我也有这个问题,并通过在/etc/nginx/nginx.conf设置这个设置来修复它

client_max_body_size 0;

0,即无限。

此外,如果你有一个反向代理运行nginx,服务器也应该有这个设置(这是我在这里抛出的)

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

sudo service php-fpm restart

由于更改全局有点冒险,我试图增加单一的脚本 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>

为我工作。

  1. 打开php.ini文件。

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

  3. 修改文件大小。

    upload_max_filesize = 400M

  4. 需要修改最大发布值。

    post_max_size = 400M

在花了几个小时后,我浏览了几乎所有的帖子,但运气不好。最后用这些步骤解决了问题。这可能是一个奇怪的解决方案,但对我来说很有效。

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

grep -rl "post_max_size" | xargs ls -lrth

在这里,我使用post_max_size关键字搜索"php.ini"文件在/etc文件夹中,但在某些系统中,你可以在/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

你必须找到php的安装位置,你会看到<强> . ini < / >强文件

只需将该文件打开到任何编辑器中并替换th值

max_file_upload : 2M


现有的答案都有部分解决方案,所以这里是编译的答案:

解决方法一:编辑。htaccess文件 适用于Apache服务器

php_value upload_max_filesize 128M
php_value post_max_size 132M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300

解决方法二:编辑wp-config.php文件 适合Wordpress应用

@ini_set( 'upload_max_filesize' , '128M' );
@ini_set( 'post_max_size', '132M');
@ini_set( 'memory_limit', '256M' );
@ini_set( 'max_execution_time', '300' );
@ini_set( 'max_input_time', '300' );

解决方法三:编辑php.ini文件 适用于nginx服务器或php.ini可修改

的地方
upload_max_filesize = 128M
post_max_size = 132M
memory_limit = 256M
max_execution_time = 300
max_input_time = 300
< p > # EYZ0
对于nginx,通过在httpserver块中添加client_max_body_size 128M;指令来增加最大文件上传大小限制(默认1MB)

设置的重要说明:

  • upload_max_filesize -设置值>小于你的文件大小
  • post_max_size -设置值>而不是你的upload_max_filesize,因为发布字段的整体大小可能会高于文件大小
  • memory_limit -设置值>而不是文件大小,因为它限制了脚本可能消耗的最大内存量
  • max_execution_time -每个脚本的最大执行时间,以秒为单位。如果脚本需要很长时间来处理文件,则将此值设置为0(无限)
  • max_input_time -每个脚本可能用于解析请求数据的最大时间。默认为60秒。如果脚本需要更多时间,则将其设置为-1

适合您的选择如下:

# if php-fpm is used for processing php
sudo service php7.4-fpm restart


# for nginx
sudo service nginx restart


# for apache
sudo service httpd restart

如果您有权限编辑php.ini文件,请使用此选项。

php . ini中的< >强upload_max_filesize < / >强< >强post_max_size < / >强设置需要更改,以支持比php默认允许的大小更大的文件。

< >强upload_max_filesize < / >强设置为需要上传的文件的最大大小。

< >强post_max_size < / >强应该设置为大于< >强upload_max_filesize < / >强来处理文件和文件上传表单的表单post变量部分的大小。 如果在文件上传表单中同时上传多个文件,< >强post_max_size < / >强应设置为(upload_max_filesize *文件个数)+ post变量大小

upload_max_filesize=30M
post_max_size=31M
不需要更新< >强memory_limit < / >强< >强max_execution_time < / >强 php设置,以防文件只是使用move_uploaded_file移动到文件上传php脚本中的最终路径。 但是如果文件上传脚本正在处理文件或将文件读取到一个变量或进行任何其他使用内存和时间等的处理,则应该设置< >强memory_limit < / >强< >强max_execution_time < / >强

设置< >强memory_limit < / >强为运行php脚本所需的内存量,< >强max_execution_time < / >强为运行脚本所需的时间(以秒为单位)。

memory_limit = 100M
max_execution_time = 120


修改php.ini后,请重新启动web服务器使其生效。

如果您没有权限更新php.ini全局设置或提高安全性,请使用此选项。

将上传php脚本复制到一个新的子文件夹,点击“上传”;并创建一个文件“。user.ini”;在新文件夹中。还要确保更新文件上传表单的动作属性,以post到新的脚本下的“Upload"文件夹中。

将以下设置添加到新创建的文件中。“.user.ini"。

upload_max_filesize=30M
post_max_size=31M


;below are optional
memory_limit = 100M
max_execution_time = 120

“user_ini.filename"Php.ini设置可以更新为用户设置文件的另一个名称。

该选项提高了安全性,因为Upload_max_filesize, post_max_size,memory_limit, max_execution_time仅针对

. PHP将在新文件夹中的脚本,不会影响其他文件夹中的脚本的PHP设置,并防止坏脚本占用任何不必要的资源

有关“。user.ini”的更多信息,请参考以下链接;设置

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

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

https://www.php.net/manual/en/configuration.file.per-user.php

重新启动web服务器,使新的.user.ini更改生效。

<强>注意:< / >强

< >强memory_limit < / >强< >强max_execution_time < / >强设置也可以在php上传脚本中使用<强>报错< / >强< >强set_time_limit < / >强函数来设置,而不是更新php.ini文件。

如果使用此选项,则不需要更新ini文件中的< >强memory_limit < / >强< >强max_execution_time < / >强设置。

将以下内容添加到php文件上传脚本的顶部

ini_set('memory_limit', '100M');
set_time_limit(120);