複数のサブフォルダーを持つプロジェクトがあります。フォルダの 1 つで、それらはいくつかの「アドオン」です。これらのアドオンにはすべて composer.json と vendor-folder があります。独自のアドオンを作成し、新しいフォルダーを作成して、composer.json
そのディレクトリに配置したいと思いました。composer install
問題なく動作しますが、どういうわけかアドオンをインストールしているときにエラーが発生します
FastCGI: server "/fcgi-bin-php5-fpm-ezi" stderr: PHP message: PHP Fatal error: Call to undefined method Composer\\Autoload\\ClassLoader::setPsr4()
この問題の原因は何ですか? composer dump-autoload
インターネットでこれらのソリューションを見つけたので、私はすでに実行しcomposer global update
ましたが、それでも機能しません。サブフォルダーで機能させるために何か特別なことをする必要がありますか?
これは現在、私の composer.json です
{
"name": "namespace/projectname-addonname",
"autoload": {
"psr-4": {
"namespace1\\namespace2\\namespace3\\" : "src"
}
}
}
それが役立つかどうかはわかりませんがvar_dump
、ローダーを実行すると、これが結果になります
object(Composer\Autoload\ClassLoader)#138 (4) {
["prefixes":"Composer\Autoload\ClassLoader":private]=>
array(0) {
}
["fallbackDirs":"Composer\Autoload\ClassLoader":private]=>
array(0) {
}
["useIncludePath":"Composer\Autoload\ClassLoader":private]=>
bool(false)
["classMap":"Composer\Autoload\ClassLoader":private]=>
array(0) {
}
}
その後、$loader->setPsr4
メソッドが呼び出され、致命的なエラーが発生します。
奇妙なことに、オートロードclassmap
の代わりに使用するとpsr-4
、問題なく動作します。