カテゴリー
Linux

【Vagrant】EC-CUBE 3 環境を Mac で構築した時の共有フォルダ mount_options 設定ポイント

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 で行ったからかしら。

次のページが参考になりました。ありがとう存じます!

以上です。

コメントを残す