Неустранимая ошибка: класс '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
попробуй скачать с гитхаба тут
Что мне помогло:
- Полностью удалить папку;
- Удалить
vlucas/phpdotenv
библиотека изcomposer.json
; - Удалить себя;
- Бегать
composer install
инициировать сноваvendor
папка иcomposer.lock
файл; - Бегать
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();
Это тоже сработало для меня. Мы можем это использовать. Спасибо.