Laravel中如何使用env方法读取.env.testing文件的环境变量
读取.env.testing环境变量的实现方案
Laravel运行时默认仅加载根目录下的.env文件,env()方法只会从已加载到内存的环境变量集合中取值,不会主动读取其他后缀的.env文件,你可以用以下3种方式实现需求:
- 方法1:运行Artisan命令时临时指定环境(最便捷)
执行Artisan命令时添加--env=testing参数,Laravel会自动加载.env.testing文件覆盖默认配置,此时正常调用env()方法即可拿到对应值:
php artisan your:command --env=testing
- 方法2:临时读取.env.testing变量不影响全局
如果仅需要读取部分.env.testing的变量,不想改动当前运行时的全局环境配置,可以直接解析文件内容取值:
// 解析.env.testing文件内容返回变量数组 $testingEnv = \Dotenv\Dotenv::parse(file_get_contents(base_path('.env.testing'))); // 直接通过数组键读取对应变量,例如读数据库配置 $dbHost = $testingEnv['DB_HOST'] ?? null;
该方法读取的变量仅在当前返回的数组内生效,不会覆盖全局环境变量,不影响其他业务逻辑调用
env()的取值结果。
- 方法3:Artisan命令内固定加载testing环境
如果你的命令本身固定需要使用testing环境的变量,可以在命令的handle方法开头加入全局加载逻辑:
public function handle() { // 将.env.testing的变量加载到全局环境 \Dotenv\Dotenv::createImmutable(base_path(), '.env.testing')->load(); // 后续调用env()即可拿到testing环境的变量 $appDebug = env('APP_DEBUG'); }
内容的提问来源于stack exchange,提问作者mateonunez
相关产品推荐
相关产品推荐

