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

cidc1ykv  于 2023-03-07  发布在  PHP
关注(0)|答案(6)|浏览(233)

我有一个php脚本位于我的laravel项目的root目录。我想访问我的.env中的设置
∮我试过∮

$dbname      = env('DB_DATABASE');
$user        = env('DB_USERNAME');
$host        = env('DB_HOST');
$pass        = env('DB_PASSWORD');

∮我得到了

PHP Fatal error:  Call to undefined function env()

解决方法是什么?我应该包括任何能够访问env()的内容吗?

zf9nrax1

zf9nrax11#

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

require_once "vendor/autoload.php";
Dotenv::load(__DIR__);

这会将您的.env配置加载到$_ENV阵列中。
现在你可以像这样访问变量了:

$dbname      = $_ENV['DB_DATABASE'];
$user        = $_ENV['DB_USERNAME'];
$host        = $_ENV['DB_HOST'];
$pass        = $_ENV['DB_PASSWORD'];

如果您真的需要env()帮助函数,只需获取该文件:

require_once "vendor/laravel/framework/src/Illuminate/Foundation/helpers.php";

现在您还可以访问env('DB_DATABASE');
注意:这并没有给予你一个引导的Laravel环境。这是一个简单的方法来获取你的.env配置变量,但仅此而已。

ugmeyewa

ugmeyewa2#

Laravel正在使用vlucas/phpdotenv读取.env文件。env()函数是Laravel helper / shortcut。要使用env命令,您必须需要供应商文件并创建app / kernel 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'));
6fe3ivhb

6fe3ivhb3#

这是截至2018年的简单工作溶液/Laravel 5.6

//assumes this script is in the root folder, same as .env
require_once "vendor/autoload.php";
(new \Dotenv\Dotenv(__DIR__))->load(); 

$count = $_ENV['UNICORN_COUNT'];

故障排除:

  • 确保正确调用Dotenv文件。
  • 检查Dotenv->load()(和Dotenv->__constructor())并提供所需的参数。
qxgroojn

qxgroojn4#

在最新版本的DotEnv中,使用此选项可使用env()函数

require_once "vendor/autoload.php";

$dotenv = Dotenv::create(__DIR__); // Dir where your .env file is located

$dotenv->load();
3lxsmp7m

3lxsmp7m5#

有同样的问题,我一旦修复了下面的代码

require_once dirname($_SERVER['DOCUMENT_ROOT'])."/vendor/autoload.php";//fetch the document path and removes the public folder using diranme function
$dotenv= Dotenv::create(dirname($_SERVER['DOCUMENT_ROOT']));// Dir where your .env file is located
$dotenv=$dotenv->load();
$url=$dotenv["APP_URL"];
zpjtge22

zpjtge226#

看来在laravel 9中创建不起作用。前面的答案对我不起作用,但请帮助我找到以下解决方案:

require_once dirname(__DIR__, 2) . "/vendor/autoload.php";
    $dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__, 2));
    $dotenv->load();
    $variable = env('VARIABLE');

相关问题