致命错误:找不到类“Dotenv\Dotenv”

Mar*_*rez 7 php namespaces phpdotenv

大家好,我很困惑,我不知道我做错了什么,这告诉我 致命错误:Class 'Dotenv\Dotenv' not found in

但我不明白为什么..

$dotenv = new \Dotenv\Dotenv(dirname(dirname(dirname(dirname(__DIR__)))));
$dotenv->load();
Run Code Online (Sandbox Code Playgroud)

我的结构是下一个,在文件 index.php 是我调用 Dotenv 的地方,我也使用过使用 Dotenv\Dotenv; 但它也不起作用。

在此处输入图片说明

小智 7

请确保您使用的Dotenv加载vendor/autoload.php

例如,我使用的是 OpenCart,其中包含一个文件startup.php

// Autoloader
if (file_exists(DIR_VENDOR . 'autoload.php')) {
    require_once(DIR_VENDOR . 'autoload.php');
}
Run Code Online (Sandbox Code Playgroud)

和我定义DIR_VENDORconfig.php是:

define('DIR_VENDOR', __DIR__.'/vendor/');
Run Code Online (Sandbox Code Playgroud)

所以最后,在index.php,我会:

// Startup
require_once(DIR_SYSTEM . 'startup.php');

// dotenv
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();
Run Code Online (Sandbox Code Playgroud)

所以startup.php加载vendor/autoload.php,加载vlucas/phpdotenv,之后我们可以找到Dotenv\Dotenv


小智 6

只需删除/删除该vendor文件夹并使用 -> 重新安装composer install


小智 2

检查作曲家文件中的“require”标记中是否有“vlucas/phpdotenv”:“~2.2”。如果您不这样做,则添加该插件并打开终端并运行“composer dump-autoload”,然后运行“composer update”。为了安全起见,再次运行“composer dump-autoload”以刷新所有文件路径。

并且,如果您确实有 phpdotenv 插件,则将该插件添加到“require”中,然后只需运行 dump-autoload 命令。