大家好,我很困惑,我不知道我做错了什么,这告诉我 致命错误:找不到类“Dotenv\Dotenv”
但我不明白为什么..
$dotenv = new \Dotenv\Dotenv(dirname(dirname(dirname(dirname(__DIR__)))));
$dotenv->load();
我的结构是下一个,在文件 index.php 中我调用 Dotenv 我也使用过使用 Dotenv\Dotenv; 但它也不起作用。
大家好,我很困惑,我不知道我做错了什么,这告诉我 致命错误:找不到类“Dotenv\Dotenv”
但我不明白为什么..
$dotenv = new \Dotenv\Dotenv(dirname(dirname(dirname(dirname(__DIR__)))));
$dotenv->load();
我的结构是下一个,在文件 index.php 中我调用 Dotenv 我也使用过使用 Dotenv\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
。
检查作曲家文件的“require”标签中是否有“vlucas/phpdotenv”:“~2.2”。如果您不添加该插件并打开终端并运行“composer dump-autoload”,然后运行“composer update”。为了安全起见,再次运行“composer dump-autoload”以刷新所有文件路径。
并且,如果您确实有 phpdotenv 插件,则将该插件添加到“require”中,然后运行 dump-autoload 命令。
对我来说,这段代码是:
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();
您只需要从中删除complied.php
它就bootstrap\cache
可以正常工作。
谢谢
我刚刚删除了 vlucas 并再次运行 composer install 。这为我解决了
我正在使用 PhpStorm IDE,并通过 SSH 在服务器上安装了 dotenv。随后我在本地目录中没有导致此错误的新供应商文件。我只是从服务器下载了最新的供应商文件夹(覆盖本地文件夹),错误就消失了。
通过安装 vlucas/phpdotenvcomposer require vlucas/phpdotenv
"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();
使用 Dotenv\Dotenv;
需要DIR。'/../vendor/autoload.php';
$dotenv = new Dotenv( DIR . "/.."); $dotenv->load();
这也对我有用。我们可以使用这个。谢谢。