Vagrantで構築した環境に、本番環境で稼働中のEC-CUBE3をコピーしてきたら、以下のエラーが発生した。
Warning: SessionHandler::read(): Session data file is not created by your uid
どうやら、EC-CUBE3のセッションファイルの所有者が本番環境と違うため起こる問題らしい。
今回この問題が解決できたので、備忘録として解決法をまとめておく。
cacheファイルを全て削除
まず、本番環境で保存されていた以下のディレクトリ内にあるキャッシュファイルを全て削除してみた。
app/cache/eccube/session/
ディレクトリの所有者を変更
次に、ディレクトリの所有者を変更する。
通常、ファイルやディレクトリの所有者を変更する場合chownコマンドを使用するが、Vagrantはデフォルトでchownコマンドが機能しないので、Vagrantfileに以下のコードを追記する。
config.vm.synced_folder "./", "/vagrant",
:owner => 'apache',
:group => 'apache'
これで後は「vagrant reload」で設定を反映させればOK。
設定が反映されると、Web公開ディレクトリの所有者がapacheに変更される。
※俺の環境ではapacheだが、ここは環境によって適宜変更する必要があるだろう。
無事にエラーが解決し、ページが表示されるようになった。
なお、vagrant reload時にhttpdが自動起動しない場合は、以下の記事を参考にすると良い。