Seems like composer can't load psr-4 class when running post-install command.
Here is my composer.json:
{
"autoload": {
"psr-4": {
"Modules\\": "modules/",
"ComposerScript\\": ""
}
},
"scripts": {
"post-install-cmd": [
"ComposerScript\\ComposerScript::postInstall"
]
}
}
ComposerScript.php
contains:
<?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();
}
}
After running composer install
Output:
Generating autoload files ComposerScript\ComposerScript::postInstall
class exist: bool(false)
PHP Fatal error: Class 'Modules\Common\Services\RouterService' not found in /var/www/project/ComposerScript.php on line 19
When running project from apache autoloader works properly. Also locally it works. Probably some server configuration, but which one....
Any help or reference appreciated.