Я новичок в Composer, и я действительно изо всех сил пытаюсь автоматически загрузить мои классы с помощью Composer. Чего мне не хватает в следующем процессе?
Я установил пакет в папку PHP include (которая находится вне корневого каталога документа — я не уверен, что это важно) следующим образом:
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-файле, если они мне нужны в composer, не так ли?
Изменить 1:
Как и просили, вот пути к моим разным файлам.
Путь к тестовой странице:
C:\Dropbox\Projects\Web\Websites\Instamation\wwwroot\qbtest.php
Путь к файлу composer.json (вне корня документа, но в моем пути include):
C:\Dropbox\Projects\Web\Websites\Instamation\wwwincludes\composer.json
Моя папка продавца находится здесь:
C:\Dropbox\Projects\Web\Websites\Instamation\wwwincludes\vendor\
И внутри моей папки продавца у меня есть эти папки и файл:
bin/
composer/
monolog/
psr/
autoload.php
Вы должны включить автозагрузку в свой qbtest.php
следующим образом:
require_once "../wwwincludes/vendor/autoload.php";
use Monolog\Logger;
$log = new Logger("name");
Других решений пока нет …