You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel .env文件是否继承服务器环境变量?

Laravel .env与服务器环境变量的优先级关系

核心原因很明确:服务器系统级环境变量的优先级高于Laravel项目里的.env文件变量。

当你在服务器层面设置了某个环境变量后,Laravel启动时会优先读取这个服务器变量,完全忽略.env文件里的同名变量——这就是你修改.env没效果的直接原因。反之,如果服务器上没有对应变量,Laravel就会读取.env里的配置值,所以单独用.env时修改能正常生效。

具体加载顺序如下:

  • Laravel启动时,先加载服务器的环境变量(包括系统全局变量、Web服务器配置的变量,比如Nginx/Apache里设置的fastcgi_param,或者Docker容器环境变量等)
  • 之后才会加载项目根目录的.env文件,但如果某个变量已经在服务器环境中存在,Laravel不会覆盖它,直接使用服务器端的数值

举个实际例子:你在服务器上设置了APP_URL=https://prod.example.com,然后把.env里的APP_URL改成https://test.example.com,此时Laravel输出的env('APP_URL')还是服务器设置的https://prod.example.com,因为服务器变量优先级更高。

如果想验证当前生效的环境变量,可以在项目根目录执行php artisan env命令,或者在代码里打印env('变量名')来确认来源。

要是想让.env里的变量生效,你需要删除服务器上对应的同名环境变量,这样Laravel才会 fallback 到.env的配置。

内容的提问来源于stack exchange,提问作者Tadas V.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 20:39:28