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_VENDOR的config.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。
小智 2
检查作曲家文件中的“require”标记中是否有“vlucas/phpdotenv”:“~2.2”。如果您不这样做,则添加该插件并打开终端并运行“composer dump-autoload”,然后运行“composer update”。为了安全起见,再次运行“composer dump-autoload”以刷新所有文件路径。
并且,如果您确实有 phpdotenv 插件,则将该插件添加到“require”中,然后只需运行 dump-autoload 命令。