PHP内存限制修改,解决网站上传大文件失败

网站上传大文件时提示“内存不足”或直接白屏,通常是因为PHP的memory_limit值太小。
本文面向零基础用户,讲清如何修改PHP内存限制,解决上传大文件失败的问题,涵盖宝塔面板和命令行两种操作方式,并给出验证方法和避坑要点。

判断问题是否由PHP内存限制引起

上传大文件失败不一定全是内存限制的锅,先确认现象。
如果上传小文件正常,大文件报错,且错误信息包含Allowed memory size exhausted或memory_limit字样,基本可以锁定是PHP内存限制过低。
反之,如果上传时直接提示“文件过大”或HTTP 413错误,那可能是Nginx的client_max_body_size或PHP的upload_max_filesize、post_max_size限制,需要一并调整。

结论句:上传大文件失败且报错含“memory_limit”时,修改PHP内存限制是直接有效的解决办法。

修改前的准备与检查

动手前先确认当前环境,避免改错文件。

  • 查看PHP版本和配置文件位置:命令行执行 php -i | grep memory_limit 可看到当前内存限制值;执行 php --ini 可看到Loaded Configuration File路径。
  • 如果是宝塔面板,进入“软件商店” -> “PHP” -> “设置” -> “配置修改”,直接编辑memory_limit。
  • 如果使用LNMP或手动编译环境,配置文件通常在/usr/local/php/etc/php.ini或/etc/php.ini。
  • 修改前建议备份原文件:cp /etc/php.ini /etc/php.ini.bak。

结论句:修改前必须确认PHP实际加载的配置文件路径,改错文件不会生效。

两种修改PHP内存限制的方法

方法一:宝塔面板操作(推荐新手)

  1. 登录宝塔面板,左侧菜单点击“软件商店”。
  2. 找到已安装的PHP版本,点击右侧“设置”。
  3. 在弹出的窗口中选择“配置修改”选项卡。
  4. 找到memory_limit一行,将默认的128M改为256M或512M(按需调整,不要盲目设成无限制)。
  5. 点击“保存”,然后点击“服务”选项卡,重启PHP服务。

方法二:命令行修改php.ini

  1. 使用SSH登录服务器,执行 php --ini 找到配置文件路径。
  2. 编辑文件:vi /etc/php.ini(路径以实际为准)。
  3. 搜索memory_limit,修改为 memory_limit = 256M。如果被注释掉,去掉行首的;。
  4. 保存退出,重启PHP-FPM或Apache:systemctl restart php-fpm 或 service php-fpm restart。

结论句:宝塔面板改完必须重启PHP服务,命令行改完必须重启PHP-FPM,否则配置不生效。

避坑指南:这些地方容易改错

  • 不要直接设为-1:memory_limit = -1表示不限制内存,可能导致服务器内存耗尽死机,建议根据服务器实际内存设置合理值。
  • 同时检查upload_max_filesize和post_max_size:这两个值必须大于你要上传的文件大小,且post_max_size应大于upload_max_filesize。
  • Nginx的client_max_body_size:如果使用Nginx,还需在站点配置中调整client_max_body_size 100m;,否则会返回413错误。
  • 修改后不生效:可能是PHP以FastCGI方式运行,需要重启php-fpm;或者存在多个php.ini文件,改错了位置。

结论句:
只改memory_limit不一定够,
上传大文件需同时调整upload_max_filesize、post_max_size和Nginx的client_max_body_size。

验证修改是否生效

修改并重启服务后,用以下方式确认:

  • 创建一个info.php文件,内容为,放到网站根目录,浏览器访问后搜索memory_limit,看是否显示新值。
  • 命令行执行 php -i | grep memory_limit,确认输出为修改后的值。
  • 再次尝试上传之前失败的大文件,观察是否成功。

如果仍失败,检查PHP错误日志(宝塔面板在“日志”中查看,命令行通常在/var/log/php-fpm/error.log),根据具体报错进一步调整。

常见疑问

问:修改后需要重启服务器吗?
不需要重启服务器,重启PHP服务或PHP-FPM即可。

问:memory_limit设置多大合适?
根据服务器内存和上传文件大小决定,一般256M或512M足够,大文件上传可设1024M,但不要超过服务器可用内存。

问:为什么改了php.ini还是报内存不足?
可能因为PHP以其他用户运行,或存在多个php.ini文件,用php --ini确认实际加载路径。

问:上传大文件还有其他限制吗?
有,还需要检查max_execution_time(脚本超时时间)和max_input_time,上传大文件耗时较长,可适当调大。

按照以上步骤操作,大部分网站上传大文件失败的问题都能解决。
如果环境特殊,建议以PHP官方文档和服务器实际配置为准,逐步排查。

分享到:
上一篇
PHP版本升级,CMS程序兼容报错修复
下一篇
PHP扩展缺失导致CMS安装失败,快速安装扩展
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意