Das Web ist voll von Diskussionen zu diesem Thema, und einige Tipps erfordern zeitintensive Eingriffe in die Konfiguration:
- add mount_options [„dmode=777″,“fmode=666“]
- Apache user and group permissions
- Apache should run as „vagrant“ user
- php+nginx+vagrant – php fails to write
- Vagrant Synced Folders Permissions
- failed to open stream: Permission denied
- Laravel 4 Permissions on a Vagrant box with Puppet
Folgende Konfigurationsanpassung in der Vagrantfile-Konfigurationsdatei hat bei mir das Problem gelöst, dass Apache im VMBox-Container nicht in das synchronisierte wwwroot auf meinem Mac OS X-Host schreiben konnte:
... data['vm']['synced_folder'].each do |i, folder| if folder['source'] != '' && folder['target'] != '' nfs = (folder['nfs'] == "true") ? "nfs" : nil if nfs == "nfs" config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: nfs else config.vm.synced_folder "#{folder['source']}", "#{folder['target']}", id: "#{i}", type: nfs, group: 'www-data', user: 'www-data', mount_options: ["dmode=777", "fmode=777"] end end end ...
Mit dem Parameter mount_options: ["dmode=777", "fmode=777"] schreiben die Web-Applikationen ihre Cache-Dateien munter und fröhlich in das wwwroot des Host-Systems.
Und ja, mir ist ehrlich gesagt schnurz, wenn die Entwickler ideologisch-religiöse Gründe vorbringen, wieso dies eine ganz, ganz schlechte Idee ist … ich verwende Vagrant, um genau solchen Konfigurationsalpträume aus dem Weg zu gehen und innert Minuten auf all meinen Entwicklungssystemen eine homogene Entwicklungsumgebung zu haben.
Etwas gutes hatten die Probleme aber: Ich habe eine meiner Web-Applikationen so angepasst, dass sie nun beim Starten auch prüft, ob sie überhaupt Schreibberechtigung auf das Cache-Verzeichnis hat.