Попытка запустить проект Symfony2 с бродячей виртуальной машиной. Я видел миллионы статей по этому поводу, но получение правильных разрешений для каталога кэша оказалось мучительно болезненным.
В моем Vagrantfile
:
config.vm.share_folder("src", "/var/www", "../www")
Моя виртуальная машина fstab
файл:
proc /proc proc nodev,noexec,nosuid 0 0
/dev/mapper/ubuntu--1110-root / ext4 acl,errors=remount-ro 0 1
# /boot was on /dev/sda1 during installation
UUID=4ed7eaaf-6f42-48ba-b5ed-f0c1df9add38 /boot ext2 defaults 0 2
/dev/mapper/ubuntu--1110-swap_1 none swap sw 0 0
На виртуальную машину установлен пакет acl.
Когда я запускаю следующее в / var / www в соответствии с инструкциями по установке Symfony2:
sudo setfacl -R -m u:apache:rwx -m u:username:rwx app/cache app/logs
Я получил:
Операция не поддерживается
Я могу запустить команду в любом другом каталоге или файле в FS (вне общего каталога), и команда работает. Что дает?
Чтобы обойти все проблемы с разрешениями с Symfony2 и Vagrant, самым простым решением является изменение пользователя и группы, запускающей apache, на vagrant. Для этого отредактируйте файл / etc / apache2 / envvars и замените строки 16 и 17 следующими: export APACHE_RUN_USER = vagrant export APACHE_RUN_GROUP = vagrant Обратите внимание, что эти инструкции предназначены для apache 2.2 в Ubuntu, обратитесь к вашей версии apache и ОС, чтобы сделать так.
Если вы не хотите менять пользователя и группу apache, вы также можете смонтировать ramdisk и поместить на него свой проект Symfony. Затем бродяга может изменить разрешения на этом диске. Видеть эта ссылка для получения инструкций о том, как смонтировать рамдиск.
Лучшее решение - использовать переопределение атрибутов. Видеть Opscode вики.
Например, в определении ролей:
override_attributes({
"apache" => {
"user" => "vagrant",
"group" => "vagrant"
}
})
У меня была такая же проблема с Typo3 в общей папке, когда не удалось создать временные файлы.