Laravel 的 .env 修改后不生效是因为配置被缓存,需运行 php artisan config:clear 或 config:cache;env() 读原始字符串,config() 读解析后配置;业务代码禁用 env(),部署应通过系统环境变量或密钥管理注入。
为什么
文件改了但
里还是旧值?
因为 Laravel 的配置在首次启动时就被缓存了,
变更不会自动生效。不是读取失败,是根本没重新读。
开发环境改完
后,必须运行
(清缓存)或
(重生成缓存)
生产环境不能依赖
实时读取——它被设计为部署前一次性加载,运行时靠缓存;直接改线上
不生效且不安全
下也看不到实时变化,缓存机制与调试开关无关
和
函数的区别到底在哪?
直接从
读原始字符串,
读的是经过解析、合并、类型转换后的最终配置数组。两者不该混用。
在
文件里只能用
—— 这是唯一允许调用
的地方
业务代码中一律用
,不要写
,否则缓存后返回
返回值永远是字符串,
实际得到的是字符串
,需手动转布尔
部署时怎么安全传入
变量而不提交到 Git?
别把
放进版本库,但也不能靠人工上传——容易漏、难审计、易出错。
Laravel 13.2.0
PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。
下载
用
环境变量
替代:在服务器上设
,Laravel 会自动 fallback 到系统级环境变量(优先级高于
)
Docker 场景下,用
或
段落注入,确保容器内有值
CI/CD 流程中,把敏感字段存在平台密钥管理(如 GitHub Secrets),部署脚本里用
动态生成
为什么本地能跑,上线就报
?
这通常不是类名错了,而是
里
或
缺失/格式错误,导致 Laravel 启动阶段解析失败,autoload 都没加载完。
检查
是否有未闭合的引号,比如
写成
(少一个引号)
必须是 32 位字符串,用
生成,别手写或复制带空格的值
用
无法语法检测,得靠
实测是否可读
Laravel 的
看似简单,但它介入时机早、缓存行为强、类型处理弱——所有“明明改了却没用”的问题,几乎都卡在这三个点上。
.envconfig/app.php.env.envphp artisan config:clearphp artisan config:cache.env.envAPP_DEBUG=trueenv()config()env().envconfig()config/*.phpenv('DB_HOST', '127.0.0.1')env()config('database.default')env('DB_CONNECTION')nullenv()env('APP_DEBUG', false)"false".env.envDB_PASSWORD=xxx.envdocker run --env-file .env.productionenvironment:echo "DB_PASSWORD=${{ secrets.DB_PASSWORD }}" >> .envClass 'App\Providers\AppServiceProvider' not found.envAPP_NAMEAPP_KEY.envAPP_NAME="My App"APP_NAME="My AppAPP_KEYphp artisan key:generatephp -l .envphp artisan tinker --execute="dd(env('APP_NAME'))".env