laravel安装中断90%卡在composer install,根源是php环境、网络或权限问题:先用php -v和php -m检查版本及扩展,再换国内镜像、调超时,最后修复vendor目录权限。

直接说结论:Laravel 安装中断,90% 是卡在 composer install 阶段,根源不是 Laravel 本身,而是 PHP 环境、网络或权限这三块出了问题。别急着重装,先定位卡在哪一环。
检查 PHP 版本和必需扩展是否就绪
很多失败根本没走到 Composer 下载环节,PHP 就直接报错退出了。运行以下命令快速验证:
-
php -v—— Laravel 10 要求 PHP ≥ 8.1,Laravel 9 要求 ≥ 8.0;低于这个版本会直接终止安装 -
php -m | grep -E "ctype|mbstring|openssl|tokenizer|session|xml"—— 缺任何一个,laravel new或composer create-project都会抛出 “required but not installed” 错误 - Windows 用户注意:
php.ini文件可能有多个(CLI 和 Apache/NGINX 各用一份),确保你改的是命令行下生效的那个(用php --ini查路径)
Composer 安装依赖时超时或报错
看到卡在 Installing dependencies from lock file 或反复重试 https://packagist.org,基本就是网络问题。别硬等,立刻干预:
- 换国内镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ - 调高超时阈值:
composer config -g process-timeout 600(单位秒) - 跳过平台检查(仅临时调试):
composer install --ignore-platform-reqs—— 但不推荐长期用,它会绕过 PHP 扩展校验,后续运行可能崩 - 如果仍失败,进项目目录手动删掉
vendor和composer.lock,再跑composer update --prefer-dist
权限不足导致写入失败
Linux/macOS 下常见于全局 Composer 目录或项目目录被 root 占用,表现为 Permission denied 或 failed to open stream: Permission denied:
- 修复 Composer 全局目录权限:
sudo chown -R $USER:$USER ~/.composer(macOS/Linux) - 修复项目目录权限:
sudo chmod -R 755 /path/to/your-project,特别要确保storage和bootstrap/cache可写 - Windows 用户若用 WSL2,别在 Windows 文件资源管理器里直接操作项目目录(路径映射易出错),全程在 WSL2 终端内操作
- 用 Docker 的话,
./vendor/bin/sail找不到通常是因为vendor根本没生成成功 —— 先确认容器内是否已执行完composer install
使用 Laravel Sail 时 vendor 不存在或 sail 命令失效
这是 Docker 场景下最典型的“半截子失败”:项目骨架拉下来了,但 vendor 是空的,sail 自然找不到入口文件:
- 不要在 Windows Terminal 里直接跑
composer install—— 它调用的是 Windows 的 PHP,版本往往太低;也不要在 WSL2 里裸跑 —— 缺少 Docker 内部环境 - 正确做法:进项目目录后,用 Sail 提供的专用容器执行:
docker run --rm -u "$(id -u):$(id -g)" -v $(pwd):/opt -w /opt laravelsail/php81-composer:latest composer install - 如果连
docker-compose.yml都没有,说明php artisan sail:install没成功执行 —— 先确保vendor存在,再运行该命令 - 最后启动前务必检查
.env是否存在且APP_KEY已生成(php artisan key:generate);否则访问 localhost 会提示 “Your app key is missing”
真正容易被忽略的点是:你以为失败发生在 Laravel,其实它只是个“受害者”。从 php -v 到 composer install 再到 docker run,每一层都有自己的运行上下文。跨环境(Windows/WSL2/Docker)、跨用户(root/$USER)、跨配置(CLI php.ini vs web php.ini)的不一致,才是半途失败的真正温床。











