正确安装Laravel应使用composer create-project laravel/laravel,而非composer require laravel/framework,后者仅安装核心库,缺失路由、配置和artisan命令,导致项目无法运行。

直接用 create-project 装 Laravel,别碰 composer require laravel/framework
装 Laravel 不是装普通包——composer require laravel/framework 只会把核心库丢进 vendor/,没路由、没配置、没 artisan 命令,项目根本跑不起来。正确姿势是用 Composer 内置的项目模板初始化命令:composer create-project laravel/laravel。
常见错误现象:composer require laravel/framework 后执行 php artisan serve 报错 Command "serve" is not defined,因为 artisan 根本不存在。
- 推荐写法:
composer create-project laravel/laravel myapp(自动拉取最新稳定版) - 指定版本加
--prefer-dist加速下载:composer create-project laravel/laravel myapp "11.*" --prefer-dist - 如果网络慢,先配镜像源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
安装失败卡在 “Loading composer repositories” 或报 SSL 错误
本质是 Composer 默认走 HTTPS 请求 Packagist,国内或企业网络常因证书校验或 DNS 污染卡住。这不是 Laravel 的问题,是 Composer 自身网络环境问题。
典型错误信息:file_get_contents(): SSL operation failed 或长时间无响应后超时。
- 临时跳过 SSL 验证(仅开发机):
composer config -g secure-http false - 更稳妥做法:换国内镜像并关掉 TLS 强制(阿里云镜像支持 HTTP):
composer config -g repo.packagist composer http://mirrors.aliyun.com/composer/ - Windows 上若提示
openssl extension is missing,检查php.ini是否启用了extension=openssl,且未被注释
装完发现 public/index.php 404 或白屏
Laravel 不是扔进 Web 目录就能跑的 PHP 脚本,它依赖正确的 Web 服务器入口和目录权限。public/ 是唯一可公开访问的目录,其他文件必须被 Web 服务器屏蔽。
使用场景:本地用 php artisan serve 最省事;上线部署必须配 Nginx/Apache 规则,否则会暴露 .env 或 app/ 下的敏感路径。
- 开发阶段直接运行:
cd myapp && php artisan serve(默认监听http://127.0.0.1:8000) - Nginx 配置关键点:root 必须指向
/path/to/myapp/public,且 location ~ \.php$ 块里要加fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; - Apache 需启用
mod_rewrite,且项目根目录要有可用的.htaccess(Laravel 已自带)
composer install 和 create-project 的区别在哪
create-project 是“从零建一个新 Laravel 应用”,含完整骨架、Git 初始化、.env 示例、预设配置;composer install 是“复原一个已有项目的依赖”,只读 composer.lock 装包,不生成新文件结构。
容易踩的坑:有人把 GitHub 上 clone 的 Laravel 源码当项目直接 composer install,结果装完还是空壳——因为那只是框架源码仓库,不是应用模板。
- 你拿到的是
laravel/laravel(带 resources/, routes/, .env.example 的仓库)→ 用create-project或直接 clone 后composer install - 你拿到的是
laravel/framework(只有 src/ 目录)→ 这不是项目,不能直接跑 - 团队协作时,应提交
composer.lock,但绝不提交vendor/和.env
复杂点在于:Laravel 版本号、PHP 小版本、扩展要求(如 mbstring、xml、ctype)三者必须对齐。比如 Laravel 11 要求 PHP 8.2+,装错版本时 create-project 会静默降级到兼容版,但可能不是你想要的——建议显式锁死版本号。










