You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

已修改php.ini中upload_max_filesize和post_max_size仍无法上传大文件

已修改php.ini中upload_max_filesize和post_max_size仍无法上传大文件

兄弟,我完全懂你这种摸不着头脑的感觉!之前折腾服务器的时候也遇到过一模一样的坑,明明改了配置、重启了服务,结果还是被2M的限制卡得死死的。给你列几个容易被忽略的排查点,你挨个试试:

  • 先确认PHP-FPM真的用了你修改的php.ini
    有时候我们凭直觉找的php.ini路径根本不对!你可以用这个命令查出FPM实际加载的配置文件:

    php-fpm8.2 -i | grep "Loaded Configuration File"
    

    输出的路径才是真正生效的那个,别再对着错误的文件瞎忙活了!

  • 检查Nginx的请求大小限制
    Nginx会在PHP处理请求之前就拦截掉超大的请求,它默认的client_max_body_size可能就是2M。你需要在对应站点的Nginx配置server块里(或者全局的nginx.conf)加上这个配置:

    client_max_body_size 20M; # 改成你需要的文件大小
    

    改完记得重启Nginx:sudo systemctl restart nginx

  • 排查PHP-FPM的Pool配置是否覆盖了全局设置
    PHP-FPM的pool配置文件(比如/etc/php/8.2/fpm/pool.d/www.conf)里,可能有php_admin_value的单独设置,这些会直接覆盖php.ini的参数。你可以用这个命令搜一下:

    grep -r "upload_max_filesize\|post_max_size" /etc/php/8.2/fpm/pool.d/
    

    如果发现有被设成2M的,改成你需要的值,然后重启PHP-FPM:sudo systemctl restart php8.2-fpm

  • 确认post_max_size的数值足够大
    这个参数控制的是整个POST请求的总大小,必须大于等于upload_max_filesize才行。比如你要传10M的文件,post_max_size至少要设成10M以上(比如12M,留点余量给其他POST参数)。

  • 检查Laravel框架层面的限制
    看看你的上传逻辑里有没有用Laravel的验证规则限制了文件大小,比如'file' => 'max:2048'(这里的2048是KB,也就是2M)。如果有的话,把数值改成你需要的大小,比如max:20480就是20M。另外也可以检查下.env文件里有没有误设相关配置项。

备注:内容来源于stack exchange,提问作者andygozindy

火山引擎 最新活动