Composer不会自动加载所需的类

时间:2017-06-09 21:12:23

标签: php include composer-php package-managers autoloader

我是Composer的新手,我真的很难用作曲家自动加载我的课程。我在以下过程中遗漏了什么?

我在我的PHP包含文件夹中安装了包(它在文档根目录之外 - 我不确定这是否重要),如下所示:

composer require monolog\monolog

它表示已成功完成,我确认该项目已添加到我的供应商文件夹中。

我的整个composer.json文件如下所示:

{
    "require": {
        "monolog/monolog": "^1.22"
    }
}

我的整个测试文件如下所示:

<?php

require_once "vendor/autoload.php";
use Monolog\Logger;

$log = new Logger("name");

?>

加载页面时出现此错误:

Fatal error: Uncaught Error: Class 'Monolog\Logger' not found in C:\Dropbox\Projects\Web\Websites\Instamation\wwwroot\qbtest.php:6 Stack trace: #0 {main} thrown in C:\Dropbox\Projects\Web\Websites\Instamation\wwwroot\qbtest.php on line 6

它包含vendor / autoload.php文件,没有任何错误。

我试图在作曲家中运行这些命令而不做任何改动:

composer update
composer dump-autoload -0

我也尝试过不同的软件包,但我得到了同样的错误,所以我很确定它与monolog软件包无关。

这里有一步我错过了吗?如果我在作曲家中需要它们,我不需要手动定义要在json文件中自动加载的类,是吗?

修改1:

根据要求,这里是我不同文件的路径。

测试页面的路径:

C:\Dropbox\Projects\Web\Websites\Instamation\wwwroot\qbtest.php

composer.json文件的路径(在文档根目录之外但在我的包含路径中):

C:\Dropbox\Projects\Web\Websites\Instamation\wwwincludes\composer.json

我的供应商文件夹在这里:

C:\Dropbox\Projects\Web\Websites\Instamation\wwwincludes\vendor\

在我的供应商文件夹中,我有这些文件夹和文件:

bin/
composer/
monolog/
psr/
autoload.php

1 个答案:

答案 0 :(得分:1)

您需要在qbtest.php中添加自动加载功能,如下所示:

require_once "../wwwincludes/vendor/autoload.php";
use Monolog\Logger;

$log = new Logger("name");