当前位置: 首页 > 新闻动态 > 技术教程

composer提示Allowed memory size exhausted怎么办_composer内存上限调整方法【汇总】

作者:裘德小鎮的故事 浏览: 发布日期:2026-01-17
[导读]:直接调大memory_limit能解决Composer内存不足问题,但必须修改PHPCLI对应的php.ini文件,通过php--ini确认路径,设为memory_limit=2G,并用php-r"echoini_get(‘memory_limit’);"验证。
直接调大 memory_limit 能解决 Composer 内存不足问题,但必须修改 PHP CLI 对应的 php.ini 文件,通过 php --ini 确认路径,设为 memory_limit = 2G,并用 php -r "echo ini_get('memory_limit');" 验证。

直接调大 memory_limit 就能解决,但必须改对位置——PHP CLI 环境的配置和 Web 服务器的不是一回事,很多人改了 php.ini 却没生效,是因为用错了配置文件。

确认当前 CLI 的 PHP 配置路径

Composer 运行在命令行下,走的是 PHP CLI SAPI,它不读 Apache/Nginx 下的 php.ini,得先知道它实际加载的是哪个配置文件:

  • 执行 php --ini,看输出里的 “Loaded Configuration File”
  • 常见路径有:/etc/php/8.1/cli/php.ini(Ubuntu/Debian)、/usr/local/etc/php/8.2/php.ini(Mac Homebrew)、C:\xampp\php\php.ini(Windows XAMPP)
  • 别只改 php -v 显示的那个路径下的文件,CLI 和 CGI 可能指向不同文件

修改 memory_limit 值(推荐 2G 起步)

在 CLI 对应的 php.ini 中找到并修改这一行:

memory_limit = 2G

注意以下几点:

  • 不要写成 memory_limit = 2048M —— 某些旧版 PHP 解析失败,2G 更稳妥
  • 值设太小(如 512M)在装大型包(如 laravel/framework + symfony/*)时仍会爆内存
  • 如果用的是 Docker,

    需在容器内改对应路径的 php.ini,或通过 php -d memory_limit=2G composer install 临时覆盖

临时绕过(适合 CI 或一次性操作)

不想改全局配置?每次运行 Composer 前加参数即可:

php -d memory_limit=2G composer install

这个方式优先级最高,会覆盖 php.ini 里的设置。CI 脚本里常用,比如 GitHub Actions:

php -d memory_limit=-1 composer update
  • -1 表示无限制(慎用,可能耗尽系统内存)
  • 某些共享主机禁用 -d 参数,此时只能联系管理员或换环境
  • Windows PowerShell 中记得用双引号包裹参数:php "-d memory_limit=2G" composer require foo/bar

为什么改了 php.ini 还报错?检查这三处

常见失效原因:

  • 改的是 Web 版本的 php.ini(如 /etc/php/8.1/apache2/php.ini),CLI 根本不读它
  • PHP 多版本共存,composer 命令实际调用的是另一个 PHP(比如通过 update-alternatives 切换过)
  • 某些 Composer 安装方式(如 curl -sS https://getcomposer.org/installer | php 生成的 composer.phar)会缓存旧配置,删掉 ~/.composer/cache/ 再试

最稳的验证方式:运行 php -r "echo ini_get('memory_limit');",输出必须是你要的值(如 2G),否则说明没改对地方。

免责声明:转载请注明出处:http://jing-feng.com.cn/news/572432.html

扫一扫高效沟通

多一份参考总有益处

免费领取网站策划SEO优化策划方案

请填写下方表单,我们会尽快与您联系
感谢您的咨询,我们会尽快给您回复!