本质是php进程内存限制过低,应优先用php -d memory_limit=-1 composer create-project laravel/laravel myapp临时扩容,再检查系统swap及cli配置路径。

安装 Laravel 时出现内存限制报错(如 Allowed memory size of ... bytes exhausted),本质是 PHP 进程在执行 Composer 安装任务时超出了默认内存上限。这不是 Laravel 本身的 bug,而是环境配置问题,调整方法需分层处理:优先解决 Composer 运行时内存,再检查系统级资源是否充足。
直接提升 Composer 执行内存
这是最常用、见效最快的手段。Composer 默认受 PHP 的 memory_limit 约束,而 CLI 模式下该值常为 128M,远低于 Laravel 全量依赖安装所需。
- 临时提升:在命令前加 PHP 参数,强制不限制内存
php -d memory_limit=-1 composer create-project laravel/laravel myapp - 若仍报错,可指定一个较高但安全的值,例如 1.5G:
php -d memory_limit=1536M composer create-project laravel/laravel myapp - 永久生效:编辑 CLI 版本的
php.ini(路径类似/etc/php/8.x/cli/php.ini),修改memory_limit = 1536M,保存后无需重启服务(CLI 不依赖 FPM)
优化 Composer 下载行为减少内存压力
大体积依赖下载和解压过程本身就会触发内存峰值,尤其在网络慢或磁盘 I/O 差的环境下。
- 使用
--prefer-dist强制下载压缩包而非源码 Git 克隆:composer create-project --prefer-dist laravel/laravel myapp - 启用国内镜像加速并降低超时风险:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/composer config -g process-timeout 600 - 跳过插件加载(某些插件会额外吃内存):
composer create-project --no-plugins --prefer-dist laravel/laravel myapp
补充系统级保障措施
当服务器物理内存紧张(比如低配云主机只有 1GB),仅调 PHP 参数可能不够,需配合系统层面加固:
- 添加 Swap 交换空间(Linux 必做项):
sudo fallocate -l 2G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfile - 确认当前 PHP CLI 使用的是你修改过的配置:
php -i | grep "Loaded Configuration File"和php -r "echo ini_get('memory_limit');" - 避免用 root 用户全局运行 Composer,权限混乱可能引发隐性错误;建议用普通用户 + 正确目录权限(
chown -R $USER:$USER ~/.composer)
验证与收尾
完成上述任一调整后,重新执行安装命令。成功后建议立即运行:php artisan key:generate(生成密钥)php artisan config:clear(清除配置缓存)
避免因缓存残留导致后续命令异常。











