我是Symfony和Composer的新手。
我最近安装了Symfony 3和the installer(在Linux上),正如所解释的那样。 之后我也installed Composer。
当我尝试运行an update with Composer时,会出现以下错误:
post-update-cmd: Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap
PHP Fatal error: Uncaught exception 'RuntimeException' with message 'Failed to write cache
file "/home/dev/var/bootstrap.php.cache".' in
/home/dev/vendor/symfony/symfony/src/Symfony/Component/ClassLoader/ClassCollectionLoader.php:236
和
[RuntimeException]
Unable to write in the cache directory (/home/dev/var/cache/dev)
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the
post-install-cmd event terminated with an exception
[RuntimeException]
An error occurred when executing the "'cache:clear --no-warmup'" command:
[RuntimeException]
Unable to write in the cache directory (/home/dev/var/cache/dev)
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap handling the
post-install-cmd event terminated with an exception
[RuntimeException]
An error occurred when generating the bootstrap file.
我发现了一些问题,但它们已经陈旧,似乎有一个特定的原因。我无法弄清楚出了什么问题。
我将/var
的所有者/组设置为{2}用户www-data
。我为该组设置了写权限。甚至在/var/cache
和bootstrap.php.cache
上尝试了777。
它没有帮助。
当我删除cache-dir
时,它是由Symfony正常创建的。 /var/cache/dev
和/prod
也会被创建并加载dirs和文件。
我现在不能再找到bootstrap.php.cache
了。
我该如何解决这个问题?
答案 0 :(得分:0)
再看后再搜索。我发现它与linux权限有关。感谢this question
仍在以正确的方式确定如何以setup the permissions为Symfony。
答案 1 :(得分:0)
如果您运行的是Centos Linux,默认情况下SELinux(/ etc / sysconfig / selinux)设置为"强制执行"模式。这将阻止apache用户或httpd进程写入Symfony缓存和日志路径。大多数人通过设置" permissive"来解决问题。模式并重新启动操作系统。
正确的方法是让SELinux进入"强制执行"模式并使用policycoreutils-python来更改某些权限。这些说明假定您已根据Symfony2 docs使用了setfacl。
sudo yum install policycoreutils-python
sudo setsebool -P httpd_can_network_connect 1
sudo setsebool -P httpd_enable_cgi 1
sudo setsebool -P httpd_builtin_scripting 1
sudo setsebool -P httpd_unified 1
sudo setsebool -P httpd_read_user_content true
sudo setsebool allow_httpd_anon_write true
sudo setsebool -P httpd_can_network_connect_db 1
sudo restorecon -rv /var/www