首页 文章

更改最大上传文件大小

提问于
浏览
430

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

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

14 回答

  • 39

    您需要在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服务器才能使用新配置 .

    如果你可以't change your php.ini, you'运气不好 . 您无法在运行时更改这些值;上传文件大于php.ini中指定的值将在执行到达 ini_set 时失败 .

    Description of core php.ini directives .

  • 11

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

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

    以下内容应该可以增加上传限制(如果服务器提供程序允许通过 .htaccess 更改PHP配置) .

    php_value upload_max_filesize 40M
    php_value post_max_size 42M
    
  • 1

    我有同样的问题,我创建了一个.user.ini文件,并将其放在上载脚本所在的目录中 . 比在该文件中我设置这两个值:

    upload_max_filesize = 40M
    
      post_max_size = 40M
    

    它对我很有用!

  • 53

    您也可以使用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 .

  • 760

    要找到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

  • 125

    我过去有同样的问题..我通过 .htaccess 文件修复它

    当您通过 .htaccess 对php configration进行更改时,您应该将配置放在 IfModule 标记中,否则将出现 Internal server error .

    这是一个例子,它对我来说很好:

    <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

  • 3

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

    .user.ini 的内容是:

    upload_max_filesize = 40M
    post_max_size = 40M
    
  • 35

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

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

    “你的PHP被设置为'本机'模式,这意味着你无法覆盖这些值 . 我已经把你改成'5.6'所以你应该好好去 . ”

    之后我通过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:我对良好的做法持开放态度,如果你看到任何不良做法,请告诉我,我会尝试改变它们 . 谢谢 .

  • 1

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

    • 的functions.php

    • php.ini

    • .htaccess

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

    • Web Hosting ,然后 Manage

    • Software 下选择 Select PHP version

    • 在表格的右上角选择 Switch to PHP Options ,字体颜色为:蓝色

    • 在最底部,您可能会有 upload_max_filesize = 2M

    • 现在,随时改变它

    • 请务必点击 Save 按钮!

    • 现在转到您的wp-admin面板,选择 Media 然后 Add

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

  • 0

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

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

    我修改了其他四个php.ini文件,包括我的系统名为"Loaded Configuration File"( 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

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

    为了更改最大上传大小,请在/etc/php/7.0/apache2/php.ini(或旧版本:/etc/php5/apache2/php.ini)中编辑upload_max_filesize和[if needed?] post_max_size etc / init.d / apache2 restart

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

  • 3

    这些解决方案不适合我! (默认情况下已经设置为32M) . 大多数情况下问题是 max_allowed_packet

    我正在使用localhost并使用 MAMP .

    这是解决方案;

    1. If you don't have my.ini

    Add

    --max_allowed_packet=168435456
    

    To

    ...\MAMP\bin\startMysql.sh
    

    2. If you have my.ini

    Under

    [mysqld]
    

    Add

    max_allowed_packet=100M
    

    DONE!

  • 0

    很多次我注意到站点机智共享主机不允许更改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);
    
  • 2

    你需要检查三件事 .

    完全在php.ini配置文件中 upload_max_filesizememory_limitpost_max_size .

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

    通常 post_max_sizememory_limit 需要大于 upload_max_filesize .


    所以三个变量 total 你需要检查才能绝对肯定 .

  • 47

    答案有点不完整,你需要做三件事

    在你的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,则重新启动/重新加载nginx的 php-fpm .

相关问题