如何从Laravel项目的根目录访问env文件?

kyo*_*kyo 0 php laravel laravel-5

我有一个PHP脚本位于我的laravel项目的目录.我想在我的.env中访问我的设置


我试过了

$dbname      = env('DB_DATABASE');
$user        = env('DB_USERNAME');
$host        = env('DB_HOST');
$pass        = env('DB_PASSWORD');
Run Code Online (Sandbox Code Playgroud)

我有

PHP Fatal error:  Call to undefined function env()
Run Code Online (Sandbox Code Playgroud)

解决方法是什么?我应该包含任何可以访问的内容env()吗?

jsz*_*ody 8

如果您只想.env在单独的PHP脚本中加载配置,可以这样做:

require_once "vendor/autoload.php";
Dotenv::load(__DIR__);
Run Code Online (Sandbox Code Playgroud)

这会将您的.env配置加载到$_ENV数组中.

所以现在您可以像这样访问您的变量:

$dbname      = $_ENV['DB_DATABASE'];
$user        = $_ENV['DB_USERNAME'];
$host        = $_ENV['DB_HOST'];
$pass        = $_ENV['DB_PASSWORD'];
Run Code Online (Sandbox Code Playgroud)

如果你真的想要env()帮助函数,那就去获取那个文件:

require_once "vendor/laravel/framework/src/Illuminate/Foundation/helpers.php";
Run Code Online (Sandbox Code Playgroud)

现在你也可以访问了 env('DB_DATABASE');

注意:这根本不会给你一个自举的Laravel环境.这是获取.env配置变量的简单方法,但就是这样.


小智 5

Laravel 使用vlucas/phpdotenv读取.env文件。该env()功能是 Laravel 助手/快捷方式。要使用 env 命令,您必须需要供应商文件并创建应用程序/内核 laravel 对象

<?php

require __DIR__.'/vendor/autoload.php';

$app = require_once __DIR__.'/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

\Dotenv::load($app->environmentPath(), $app->environmentFile());   
var_dump(env('DB_DATABASE'));
Run Code Online (Sandbox Code Playgroud)