Laravel 项目启动失败主因是PHP版本/扩展不达标、Web服务器配置错误或.env未生效;需确认PHP≥8.1并启用mbstring等扩展,DocumentRoot指向public目录,且执行key:generate与config:clear。

直接用 laravel/installer 或 composer create-project 能跑起来,但多数人卡在 PHP 版本、扩展缺失、Apache/Nginx 配置或 .env 未生效上。
确认 PHP 环境是否达标
Laravel 10+ 要求 PHP ≥ 8.1,且必须启用 mbstring、openssl、pdo、tokenizer、xml、ctype、json 这些扩展。Windows 用户常漏掉 php.ini 中的 extension=openssl 和 extension=mbstring —— 注释没去掉就报 Class "Mbstring" not found。
- 运行
php -v看版本,再执行php -m | grep -E "(mbstring|openssl|pdo)"(Linux/macOS)或php -m(Windows,手动扫一遍) - 如果缺扩展,Linux 用
sudo apt install php-mbstring php-xml php-zip;macOS 用brew install php@8.2后注意echo 'export PATH="/opt/homebrew/opt/php/bin:$PATH"' >> ~/.zshrc - Windows 下改
php.ini后必须重启 Web 服务(不是浏览器),否则phpinfo()里看不到变化
用 Composer 创建项目时绕过权限和路径坑
别在系统根目录或带空格/中文路径下运行 composer create-project laravel/laravel myapp —— Windows 上容易因路径解析失败导致 vendor/autoload.php 找不到,报错 Failed to open stream: No such file or directory。
- 先确保 Composer 已全局安装且可用:
composer --version - 切换到干净英文路径,例如
D:\laravel\myapp或~/Sites/myapp - 运行
composer create-project laravel/laravel:^10.0 myapp(显式指定版本避免拉到 dev 分支) - 如果卡在
Installing dependencies,加--no-interaction --prefer-dist参数提速
Web 服务器配置最容易忽略的两点
用 php artisan serve 只适合本地调试;真要配 Apache/Nginx,核心是让请求全部落到 public/index.php,而不是项目根目录。很多人把整个 Laravel 文件夹扔进 htdocs,结果一访问就看到满屏文件列表或 403。
- Apache:确保
mod_rewrite已启用,并在虚拟主机配置里设置DocumentRoot "/path/to/myapp/public",同时允许.htaccess覆盖:AllowOverride All - Nginx:在
server块里写root /path/to/myapp/public;,并加上try_files $uri $uri/ /index.php?$query_string; - Windows 上用 XAMPP/WAMP,记得点开控制面板 → Apache → Config →
httpd-vhosts.conf手动加虚拟主机,不能只改DocumentRoot
.env 文件不生效?检查这三处
.env 是 Laravel 启动时读取的第一份配置,但它不会自动重载。改完不生效,90% 是因为缓存没清、APP_KEY 没生成,或文件权限不对。
- 首次安装后必须运行
php artisan key:generate,否则会报The only supported ciphers are AES-128-CBC and AES-256-CBC - 修改
.env后,执行php artisan config:clear(不是cache:clear);如果用了 OPcache,还得加opcache_reset()或重启 PHP-FPM - Linux/macOS 下检查
.env权限:ls -l .env应显示可读,若为----------就得chmod 644 .env
环境变量和 Web 服务器路由规则这两块,改一次就要验证一次——Laravel 不会告诉你哪行配置被忽略了,它只会安静地返回 500 或空白页。










