8

大家好,我很困惑,我不知道我做错了什么,这告诉我 致命错误:找不到类“Dotenv\Dotenv”

但我不明白为什么..

$dotenv = new \Dotenv\Dotenv(dirname(dirname(dirname(dirname(__DIR__)))));
$dotenv->load();

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

在此处输入图像描述

4

10 回答 10

7

确保vendor/autoload.php.

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

// Autoloader
if (file_exists(DIR_VENDOR . 'autoload.php')) {
    require_once(DIR_VENDOR . 'autoload.php');
}

我已经定义DIR_VENDORconfig.php

define('DIR_VENDOR', __DIR__.'/vendor/');

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

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

// dotenv
$dotenv = new Dotenv\Dotenv(__DIR__);
$dotenv->load();

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

于 2017-04-05T15:44:22.690 回答
5

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

于 2019-10-03T06:48:43.550 回答
2

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

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

于 2016-10-26T14:01:12.410 回答
1

对我来说,这段代码是:

use Dotenv\Dotenv;

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

$dotenv = new Dotenv(__DIR__ . "/..");
$dotenv->load();

而不是这个:

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

$dotenv = new Dotenv/Dotenv(__DIR__);
$dotenv->load();
于 2020-03-19T16:48:46.657 回答
1

您只需要从中删除complied.php它就bootstrap\cache可以正常工作。

谢谢

于 2019-04-27T07:14:34.123 回答
0

我刚刚删除了 vlucas 并再次运行 composer install 。这为我解决了

于 2021-05-28T11:10:10.490 回答
0

我正在使用 PhpStorm IDE,并通过 SSH 在服务器上安装了 dotenv。随后我在本地目录中没有导致此错误的新供应商文件。我只是从服务器下载了最新的供应商文件夹(覆盖本地文件夹),错误就消失了。

于 2020-11-27T12:00:00.910 回答
0

通过安装 vlucas/phpdotenvcomposer require vlucas/phpdotenv

于 2021-08-28T10:50:09.657 回答
0

"vlucas/phpdotenv": "^5.4"现在它的工作方式如下:

<?php
require 'vendor/autoload.php';

use Dotenv\Dotenv;

$dotenv = Dotenv::createImmutable(__DIR__);
$dotenv->load();

或者

<?php
require 'vendor/autoload.php';

$dotenv = Dotenv\Dotenv::createImmutable(__DIR__); //Notice the Namespace and Class name
$dotenv->load();
于 2022-02-21T15:11:14.720 回答
-1

使用 Dotenv\Dotenv;

需要DIR。'/../vendor/autoload.php';

$dotenv = new Dotenv( DIR . "/.."); $dotenv->load();

这也对我有用。我们可以使用这个。谢谢。

于 2020-04-14T05:46:17.927 回答