【发布时间】:2016-01-06 06:05:39
【问题描述】:
运行安装后命令时,似乎 composer 无法加载 psr-4 类。
这是我的 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 致命错误:类 在第 19 行的 /var/www/project/ComposerScript.php 中找不到“Modules\Common\Services\RouterService”
当从 apache 自动加载器运行项目时工作正常。 在本地也可以工作。 可能是一些服务器配置,但是哪一个....
任何帮助或参考表示赞赏。
【问题讨论】:
-
文件
modules\Common\Services\RouterService.php是否存在?注意区分大小写! -
@Sven,是的,它存在。我无法调试任何东西也很有趣,因为作曲家覆盖了 ClassLoader.php
标签: php composer-php package-managers