vagrant共有フォルダのパーミッションでハマった話
最近ローカル環境構築で使う仮想化ツールを、VMwareからvirtualbox+vagrantに変更しました。
その際vagrant共有フォルダのパーミッションでハマったのでメモ。
cakephpで作ったサイトのソースを以前の環境から移して表示させたところ、以下のエラーが。
Warning (2): Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (サイトのパス/app/tmp/sessions) [Unknown, line 0]
どうやらセッションの書き込みができないらしい。
さっそく該当ディレクトリの権限を確認してみたところ、
ls -al app/tmp/ drwxrwxrwx 1 vagrant vagrant 136 May 26 16:02 sessions
とオーナーとグループ共にvagrantになっており、apacheで書き込みないことが問題だと分かった。
vagrantの共有フォルダーはchownできない!
ならば両方apacheに変えてしまおう、と
chown apache:apache app/tmp/sessions
とコマンドをうってすぐ確認。
ls -al app/tmp/ drwxrwxrwx 1 vagrant vagrant 136 May 26 16:02 sessions
あれ?変わってない…。何度か試してみるものの、全く変化なし。
ググってみた結果、どうやらvagrantの共有フォルダはコマンドで所有者や権限の変更できないらしい。
Laravel4 パーミッションエラー Vagrant パーミッションが変更しない件
ではそれらを変更したい場合どうするか?
vagrantの設定ファイルであるVagrantfileに設定を書き込んで再起動する必要があるらしい。
そこで、Vagrantfileに以下を追記。
config.vm.synced_folder "./", "/vagrant", :owner => "apache", :group => "apache", :mount_options => ["dmode=775,fmode=775"]
再起動して確認してみたところ、
vagrant reload ls -al app/tmp/ drwxrwxr-x 1 apache apache 136 May 26 16:02 sessions
これでやっと変更できました!
サイトに接続したところ、無事エラーは消えていました。
すっきり。
技術