2024.12.02
元々ECCUBE4.2で開発した案件があり、それの修正の為に新しいPCでdockerを立ち上げた所…
1 2 3 4 5 6 7 8 9 10 11 12 | 2024-11-26 14:26:46 Symfony\Component\ErrorHandler\Error\FatalError {#150 2024-11-26 14:26:46 #message: "Compile Error: Declaration of Eccube\DependencyInjection\EccubeExtension::getAlias() must be compatible with Symfony\Component\DependencyInjection\Extension\Extension::getAlias(): string" 2024-11-26 14:26:46 #code: 0 2024-11-26 14:26:46 #file: "./src/Eccube/DependencyInjection/EccubeExtension.php" 2024-11-26 14:26:46 #line: 38 2024-11-26 14:26:46 -error: array:4 [ 2024-11-26 14:26:46 "type" => 64 2024-11-26 14:26:46 "message" => "Declaration of Eccube\DependencyInjection\EccubeExtension::getAlias() must be compatible with Symfony\Component\DependencyInjection\Extension\Extension::getAlias(): string" 2024-11-26 14:26:46 "file" => "/var/www/html/src/Eccube/DependencyInjection/EccubeExtension.php" 2024-11-26 14:26:46 "line" => 38 2024-11-26 14:26:46 ] 2024-11-26 14:26:46 } |
起動しない。
該当箇所のコードは以下。
1 2 3 4 | public function getAlias() { return 'eccube'; } |
こういうのを全部「public function getAlias():string」みたいな感じにしろとのことですが、カスタマイズしていないならともかく、結構カスタマイズしたのですべてなんて当然つらいですし、どうして今まで動いたものが動かなくなっているんですか?開発環境だけの話なので、これやる意味なくないですか?
まず、Eccubeの4.2でのsymfonyのバージョン指定は^5.4です。そしてEccube4.3では前述の通り6です。symfonyのバージョン6以降では型宣言をしなければいけないことになっております。
つまり、docker-composeを直せばOKです。
以下となっている部分を
1 | image: ${REGISTRY:-ghcr.io}/${IMAGE_NAME:-ec-cube/ec-cube-php}:${TAG:-8.1-apache} |
以下に変更して再ビルドします。
1 | image: ${REGISTRY:-ghcr.io}/${IMAGE_NAME:-ec-cube/ec-cube-php}:${TAG:-8.1-apache-4.2} |
これで駄目ならもう諦めろ🐯滅びの呪文を唱えてください。
私はそれで解決しました。
1 | docker-compose down --rmi all --volumes --remove-orphans |
とてもここに書いてあります。