Composer怎么安装Laravel Composer怎么部署开发环境【必看】

1次阅读

composer create-project 装 laravel 卡在「resolving dependencies」大概率因未关闭 packagist 镜像或缺失 ext-opcache/ext-pdo_sqlite 扩展;需用 php -m 确认扩展启用,并临时禁用镜像或换为有效国内源。

Composer怎么安装Laravel Composer怎么部署开发环境【必看】

composer create-project 装 Laravel 为什么卡在「Resolving dependencies」?

不是网络慢,大概率是没关 Packagist 镜像或 PHP 扩展缺失。Laravel 10+ 默认依赖 ext-opcacheext-pdo_sqlite,缺一个就会让依赖解析拖长到几分钟甚至超时。

  • 先运行 php -m | grep -E "opcache|pdo_sqlite" 确认扩展已启用
  • 临时禁用镜像:加 -d repos.packagist.org=packagist.org 参数,比如:
    composer create-project laravel/laravel myapp --no-interaction -d repos.packagist.org=packagist.org
  • 如果用国内镜像,别用过期的 https://packagist.phpcomposer.com(已停),换成 https://packagist.laravel-china.org 或阿里云源

laravel new 和 composer create-project 选哪个?

laravel new 是个封装脚本,本质还是调 composer create-project,但它会自动执行 npm install、生成密钥、设好 storage 权限——只适合本地快速启动。

  • 开发机上图省事,用 laravel new myapp 没问题
  • CI/CD 或 docker 构建环境里,必须用 composer create-project,否则 laravel new 会尝试访问外部 npm registry,容易失败
  • laravel new 默认装最新稳定版;create-project 可指定版本,比如:composer create-project laravel/laravel myapp "9.*"

部署时 composer install 报错「class not found」或「autoload.php missing」

不是代码问题,是没跑 composer install --no-dev --optimize-autoloader,或者没清掉 vendor 目录残留。

  • 上线前务必删干净旧 vendor/composer.lock(除非你确定 lock 文件和当前环境匹配)
  • --no-dev 不只是省空间,还能避免 phpunit 等开发依赖引发的 autoloader 冲突
  • 如果用 Laravel Octane,还要额外加 --classmap-authoritative,否则热重载可能找不到新类
  • 检查 autoload 段是否误删了 "psr-4": {"App": "app/"} —— 这个漏掉就真找不到 AppHttpControllers...

PHP 版本不匹配导致 composer install 失败

Laravel 10 要求 PHP 8.1+,但错误信息往往藏在日志深处,只显示「Your requirements could not be resolved」,实际是 PHP 版本被 platform 配置锁死了。

  • composer.json 里有没有 "config": {"platform": {"php": "8.0.0"}} —— 这是人为降级,删掉或改成匹配的版本
  • php -vcomposer show php 对比真实版本和 Composer 认为的版本,后者可能受 platform 干扰
  • Docker 部署时,别只改 Dockerfile 的 FROM,还要确认 composer install 命令跑在同一个 PHP 环境下,否则容器内 PHP 版本和宿主机不一致会静默失败

很多团队卡在「本地能跑,部署就挂」,其实就差一行 --no-dev 或一个没删干净的 vendor。Laravel 本身不复杂,Composer 的隐式行为才是真坑。

text=ZqhQzanResources