EC-CUBE3のサイト移転時のプラグインの注意
先に本番を作って後からステージングを作った関係で起きてしまった問題
アレコレとプラグインを突っ込んでいたが、このプラグインが起因で例えばページに紐付いているプラグインが無い。と言うエラーが出る。
まず出たエラーは
Compile Error: Symfony\Component\Debug\DebugClassLoader::loadClass(): Failed opening required
結局の所、Symfonyのコンパイルディレクトリが何らかの原因で生成もしくはコンパイル自体出来ていない。
ディレクトリの問題かと思い、EC-CUBEのフォルダ自体のパーミッションを
$ chmod -R 777 eccube/
と言う感じのパワープレイをしたが、このエラーは解決されない。
多分インストールした際に何らかの設定が入っていてサーバー固有に紐付いたコンパイルとかが有るのか。
その為、一旦EC-CUBEの素のバージョンをアップロードしなおしinstall.phpを叩く。
その後に手で差分を入れていくと言う地道な作業に。フロントページが正しく表示されたので、詳細ページに行くと
No mapping file found named
どうやらプラグインに紐付いたymlが無いと言うことで怒られる。
一旦管理画面からプラグインの全削除をしようとするも、ディレクトリ削除が出来ない。
また、オーナーズストアからファイルをダウンロードして再アップロードしようとしても「ファイルのアップロードに失敗しました」の文言が。
で、根本を探ると今回のサーバーへのアップロードはFTPサーバーの無いSCPでのアップロードでユーザーはSSH用ユーザーであった事がひとつ。
元々ファイルの生成はapache権限でやるのにSSHのユーザーが違うユーザーだった事も問題に。
$ chmod -R 777 /html/Plugin/ $ chown -R apache:apache /html/Plugin/ $ chmod -R 777 /app/Plugin/ $ chown -R apache:apache /app/Plugin/
これでアップロードも更新も問題なく動いた。
手でファイルを差し替えた場合、一番の問題はパーミッションよりもアップしたユーザー側になるな。と数時間ハマった忘備録。