laravel能否正常运行取决于php版本≥8.1且mbstring、openssl、pdo等核心扩展齐全,.env配置正确并执行config:clear与config:cache;缺一即导致安装卡顿或500/403等静默故障。

Laravel 能不能跑起来,不看代码写得多漂亮,关键在 PHP 扩展齐不齐、.env 配得对不对。版本够高但缺一个 mbstring,项目就卡在 composer create-project;.env 改了却没清缓存,APP_DEBUG 关不掉,数据库连不上——全是环境层面的“静默故障”。
PHP 版本与核心扩展必须一步到位
Laravel 10+ 要求 PHP ≥ 8.1,Laravel 11 推荐 PHP ≥ 8.2,Laravel 13.2 明确需 PHP 8.3+。光有版本不够,以下扩展缺一不可: - `openssl`(HTTPS、加密) - `pdo`(数据库底层驱动) - `mbstring`(多字节字符串处理,中文支持基础) - `tokenizer`(Artisan 命令解析必需) - `xml`、`ctype`、`json`、`fileinfo`(框架启动校验环节直接报错) - `intl`(Mac/Linux 用户高频缺失,影响日期/本地化和部分依赖安装)验证方式:
-
php -v看版本 -
php -m | grep -E "openssl|pdo|mbstring|tokenizer|xml|ctype|json|fileinfo|intl"(Linux/macOS) - Windows 用户请打开
php.ini,确认对应extension=行未被注释(如extension=openssl)
常见补救:
- Ubuntu/Debian:
sudo apt install php8.2-mbstring php8.2-xml php8.2-intl php8.2-fileinfo - macOS(Homebrew):
brew install php@8.2(自动带全扩展) - Windows(XAMPP/WAMP):编辑
php.ini,取消;extension=...前的分号,重启服务
Composer 配置要快且稳,别让网络拖垮第一步
默认源访问 GitHub 慢或超时,是国内用户创建项目失败的主因。务必提前配置国内镜像: - 全局设置阿里云镜像:`composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/` - 创建项目时加 `--prefer-dist`:`composer create-project laravel/laravel:^11.0 myapp --prefer-dist` - 若内存不足报错(尤其 WSL 或低配机器),临时放宽限制:`COMPOSER_MEMORY_LIMIT=-1 composer create-project ...`注意:
- 不要用
laravel new myapp(依赖全局安装器,路径和版本易失控) - 拉完立刻检查
myapp/composer.json中"laravel/framework": "^11.0"是否存在,避免误装旧版
.env 文件不是“填完就完”,是启动前提+缓存源头
`.env` 必须放在项目根目录(即含 `artisan` 文件的那一层),命名严格为 `.env`,不能是 `.env.local` 或 `.env.production`。Git 默认忽略它,部署时需手动上传或通过 CI/CD 注入。三项必改字段(填错会导致 404、登录失效、邮件发不出):
-
APP_KEY:必须执行php artisan key:generate生成,禁止手输或复制旧值 -
DB_DATABASE:填数据库名(如homestead),不是用户名;MySQL root 默认无密码,DB_PASSWORD=后留空即可,不要写null或删掉整行 -
APP_URL:开发时设为http://localhost:8000,不用127.0.0.1(Chrome 视为不同源,CSRF 和 API 请求会跨域失败)
关键逻辑:
-
env()函数只在应用启动初期有效;一旦运行过php artisan config:cache,后续所有env()调用都返回null - 生产环境必须用
config('app.enable_feature'),而不是env('ENABLE_FEATURE') - 修改
.env后,必须执行php artisan config:clear && php artisan config:cache才生效
生产环境变量安全注入,别把 .env 当万能钥匙
Web 服务器(如 Nginx + PHP-FPM)不读 shell 的 `export`,也不继承终端环境变量。`.env` 在生产中既是性能瓶颈,也是安全隐患。更稳妥的方式:
- 在 PHP-FPM pool 配置中(如
/etc/php/8.2/fpm/pool.d/www.conf)添加:env[APP_ENV] = productionenv[APP_DEBUG] = falseenv[APP_KEY] = base64:xxxxxx(敏感值建议 base64 编码) - Docker 用户用
environment:+env_file:组合,并确保.env不打入镜像(.dockerignore加上) - Nginx 中避免用
fastcgi_param APP_KEY直传,防止日志泄露
Nginx 还需加防护:
location ~ \.env { deny all; }
防止 Web 直接访问暴露数据库凭据。
不复杂但容易忽略。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











