EC-CUBE 3 を Vagrant にインストールするとき、次の問題に遭遇しました><。
- インストールシェルファイルが実行できない。
- インストールできても、パーミッションの問題で、どんなページでも表示すらできない。
これを解決しましたので、ノートいたします♪
解決できたコードとそのポイント
- 共有フォルダ・ファイルのパーミッション設定を、ディレクトリは 777、ファイルは 766 とする。
config.vm.synced_folder "synced_folder/ec-cube/", "/var/www/ec-cube", create: true, mount_options: ['dmode=777', 'fmode=766']
問題が発生していた時のコード
config.vm.synced_folder "synced_folder/ec-cube/", "/var/www/ec-cube", create: true
問題が発生していた時のエラー
EC-CUBE 3 を git clone
し、シェルインストールしようとすると、次のエラーとなりました><。
$ ./eccube_install.sh mysql -bash: ./eccube_install.sh: 許可がありません $
chmod u+x eccube_install.sh
し、インストールは完了することができました。
EC-CUBE 3 を動かしてみると、ウェブブラウザにはなにも表示されません><。真っ白です><。
次のような PHP エラーとなっておりました。
[09-Oct-2016 15:50:10 Asia/Tokyo] PHP 11. Silex\Provider\SecurityServiceProvider->Silex\Provider\{closure}() /var/www/ec-cube/vendor/pimple/pimple/lib/Pimple.php:126 [09-Oct-2016 15:50:10 Asia/Tokyo] PHP 12. array_map() /var/www/ec-cube/vendor/silex/silex/src/Silex/Provider/SecurityServiceProvider.php:304 [09-Oct-2016 15:50:10 Asia/Tokyo] PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Session Storage was not able to create directory "/var/www/ec-cube/app/cache/eccube/session"' in /var/www/ec-cube/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php:52 Stack trace: #0 /var/www/ec-cube/vendor/silex/silex/src/Silex/Provider/SessionServiceProvider.php(54): Symfony\Component\HttpFoundation\Session\Storage\Handler\NativeFileSessionHandler->__construct('/var/www/ec-cub...') #1 /var/www/ec-cube/vendor/pimple/pimple/lib/Pimple.php(126): Silex\Provider\SessionServiceProvider->Silex\Provider\{closure}(Object(Eccube\Application)) #2 /var/www/ec-cube/vendor/pimple/pimple/lib/Pimple.php(83): Pimple::{closure}(Object(Eccube\Application)) #3 /var/www/ec-cube/vendor/silex/silex/src/Silex/Provider/SessionServiceProvider.php(60): Pimple->offsetGet('session.storage...') #4 /var/www/ec-cube/vendor/pimple/pimple/lib/Pimple.php(126): Silex\Provider\SessionServiceProvider->Silex\Provider\{closure}(Object(Eccube\Application)) #5 /va in /var/www/ec-cube/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php on line 52
/var/www/ec-cube/app/cache/eccube/session ディレクトリが作成できず、セッションデータを生成できないようですわ><。
以上のエラーとなりましたため、Vagrant 共有フォルダのパーミッションを変更し、問題を解決することができました♪
おまけ。デフォルトの Vagrant 共有ディレクトリのパーミッション設定
synced_folder に mount_options を設定しない場合、共有ディレクトリ以下でのデフォルトのパーミッションは次となりました♪
仮想マシンから作成して試しましたの♪ホストマシンの Mac から確認したところ、ユーザとグループは仮想マシンのものと異なりますけれども、同様でしたわ♪
- ディレクトリ: 755
- ファイル: 644
なお、mount_options 設定後でも、Mac から見たディレクトリとファイルのパーミッションは、ディレクトリ: 755、ファイル: 644 のままでした。
おわりに
この問題は Windows では発生しなかったのですけれども、今回 Mac で行ったからかしら。
次のページが参考になりました。ありがとう存じます!
以上です。