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

これでやっと変更できました!
サイトに接続したところ、無事エラーは消えていました。

すっきり。

技術

Categoryカテゴリー一覧

メニューを閉じる

tagタグ一覧

メニューを閉じる