Автоматическая загрузка Composer не выполняется в сценарии после установки

Похоже, что composer не может загрузить класс psr-4 при запуске команды post-install.

Вот мой composer.json:

{
"autoload": {
"psr-4": {
"Modules\\": "modules/",
"ComposerScript\\": ""}
},
"scripts": {
"post-install-cmd": [
"ComposerScript\\ComposerScript::postInstall"]
}
}

ComposerScript.php содержит:

<?php

namespace ComposerScript;

use Modules\Common\Services\RouterService;
use Composer\Script\Event as ComposerEvent;

class ComposerScript
{

public static function postInstall(ComposerEvent $event)
{

$vendorDir = $event->getComposer()->getConfig()->get('vendor-dir');

require $vendorDir . '/autoload.php';

echo 'class exist: ';
var_dump(class_exists('Modules\Common\Services\RouterService'));

$router = new \Modules\Common\Services\RouterService();
}
}

После запуска composer install
Выход:

Генерация файлов автозагрузки ComposerScript \ ComposerScript :: postInstall

класс существует: bool (false)

Фатальная ошибка PHP: Класс
«Модули \ Common \ Services \ RouterService» не найдены в /var/www/project/ComposerScript.php в строке 19

При запуске проекта из apache автозагрузчик работает корректно.
Также локально это работает.
Возможно какая-то конфигурация сервера, но какая ….

Любая помощь или ссылка приветствуется.

0

Решение

Проблема была с PSR-4 самозарядные:

http://www.php-fig.org/psr/psr-4/

Папки должны быть с заглавными буквами, такими как имя класса:

{
"autoload": {
"psr-4": {
"Modules\\": "Modules/",
"ComposerScript\\": ""}
}
}


$router = new \Modules\Common\Services\RouterService();

Должно совпадать:

-Modules
-Common
-Services
-RouterService.php
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]