Неустранимая ошибка: класс 'Dotenv\Dotenv' не найден в

Здравствуйте, ребята, я так запутался, я не знаю, что я делаю неправильно, это сказало мне Фатальную ошибку: класс 'Dotenv\Dotenv' не найден в

Но я не понимаю, почему..

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

Моя структура следующая, и в файле index.php я вызываю Dotenv, также я использовал use Dotenv\Dotenv; но это тоже не работает.

13 ответов

Убедитесь, что вы используете Dotenv после загрузки из vendor/autoload.php,

Например, я использовал OpenCart, в котором содержался файл startup.php с:

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

И я определил DIR_VENDOR в config.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,

Просто удалите / удалите vendor папку и переустановите с помощью -> composer install.

с "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();

Проверьте, есть ли у вас "vlucas/phpdotenv": "~2.2" в теге "require" в файле композитора. если вы не добавите этот плагин и откроете свой терминал и запустите "composer dump-autoload", то запустите "composer update". и просто на всякий случай запустите "composer dump-autoload" еще раз, чтобы обновить все пути к файлам.

и, если у вас есть плагин phpdotenv, добавьте этот плагин в "require", а затем просто выполните команду dump-autoload.

Вам просто нужно удалить complied.php от bootstrap\cache и это будет работать нормально.

Спасибо

Для меня работал этот код:

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();

Убедитесь, что ваш путь к autoload.php правильный '../vendor/autoload.php';

Я использую среду разработки PhpStorm и установил dotenv на сервер через SSH. Впоследствии у меня не было новых файлов поставщиков в локальном каталоге, которые вызывали эту ошибку. Я просто загрузил с сервера актуальную папку поставщика (перезаписав локальную), и ошибка исчезла.

Потому что у вас установлен композитор

      $ composer require vlucas/phpdotenv

если вы не уверены в том, как$ composer require vlucas/phpdotenvпопробуй скачать с гитхаба тут

Что мне помогло:

  1. Полностью удалить папку;
  2. Удалитьvlucas/phpdotenvбиблиотека изcomposer.json;
  3. Удалить себя;
  4. Бегатьcomposer installинициировать сноваvendorпапка иcomposer.lockфайл;
  5. Бегатьcomposer require vlucas/phpdotenvеще раз, чтобы загрузить библиотеку.

Еще может сказатьUndefined type 'Dotenv\Dotenv'.intelephense(1009)в вашем редакторе кода, но на вашем локальном хосте ваш проект должен загружаться без ошибок. Надеюсь, поможет!

Я просто удалил vlucas и снова запустил composer install. Это решило это для меня

установить vlucas/phpdotenv с помощью composer require vlucas/phpdotenv

Используйте Dotenv\Dotenv;

требуется DIR. '/../vendor/autoload.php';

$dotenv = новый Dotenv (DIR. "/..");$dotenv->load();

Это тоже сработало для меня. Мы можем это использовать. Спасибо.

Другие вопросы по тегам