yii3部署时composer报“allowed memory size exhausted”错误,需将cli模式php内存限制提升至2g,推荐用php -d memory_limit=2g composer install临时覆盖,并配合--no-dev --optimize-autoloader参数加速生产环境安装。

Yii3项目部署时 Composer 安装依赖中途报错“Allowed memory size exhausted”,进程被强制终止,vendor目录生成不全,后续命令全部失效。
确认当前PHP内存限制值
进入项目根目录,执行:php -r "echo ini_get('memory_limit').PHP_EOL;"
若输出为 【128M 或更低】,则无法满足 Yii3 全量依赖(尤其是 symfony/console、psr/cache 等组件)的编译加载需求,必须提升。
临时提高内存限制(部署阶段专用)
方法一:命令行覆盖(推荐)
在 composer install 或 create-project 前,直接加参数:php -d memory_limit=2G composer install
方法二:修改当前会话 php.ini(仅限有写权限时)
找到 CLI 模式下的 php.ini 路径:php --ini | grep "Loaded Configuration File"
用 vim 编辑该文件,定位到 memory_limit = 行,改为 memory_limit = 2G,保存后重启终端生效。
【注意:不要改 web 服务器(如 nginx+fpm)的 php.ini,只改 CLI 模式配置】
跳过开发依赖加速安装
生产环境部署时,dev 依赖(如 phpunit、faker、debug 工具)完全不需要:
第一步:确保 composer.json 中已设 "minimum-stability": "stable" 且无 "prefer-stable": true 冲突项
第二步:运行 composer install --no-dev --optimize-autoloader --no-interaction
第三步:若仍卡住,追加 --ignore-platform-reqs 绕过 PHP 版本/扩展校验(仅当确认环境兼容时使用)
手动清理并分步重试
若 vendor 已损坏,先彻底清除残留:
rm -rf vendor composer.lock
然后分两阶段执行:
① 先安装核心骨架:php -d memory_limit=2G composer require yiisoft/yii-core:^3.0 --no-update
② 再补全依赖:php -d memory_limit=2G composer update --with-dependencies
这一步能避开 Composer 自动解析全图时的内存峰值,尤其适用于 2GB 以下物理内存的 VPS。











