作曲家:无法写入缓存文件



我是Symfony和Composer的新手。

我最近安装了Symfony 3和安装程序(在Linux上),正如解释的那样。之后我还安装了Composer。

当我尝试使用 Composer 运行更新时,它会出现如下错误:

post-update-cmd: SensioBundleDistributionBundleComposerScriptHandler::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 SensioBundleDistributionBundleComposerScriptHandler::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 SensioBundleDistributionBundleComposerScriptHandler::buildBootstrap handling the 
post-install-cmd event terminated with an exception
[RuntimeException]                                     
An error occurred when generating the bootstrap file.  

我发现了一些问题,但它们很旧,似乎有特定的原因。我只是无法弄清楚出了什么问题。

我将/var的所有者/组设置为www-data哪个是Apache 2用户。我为组设置了写入权限。甚至在/var/cachebootstrap.php.cache上尝试了 777.这无济于事。

当我删除cache-dir时,它是由Symfony正常创建的。 还会创建/var/cache/dev/prod并加载目录和文件。我现在找不到bootstrap.php.cache了。

我该如何解决这个问题?

如果你运行的是 Centos Linux,默认情况下 SELinux (/etc/sysconfig/selinux) 被设置为"enforcecing"模式。这将阻止 apache 用户或 httpd 进程写入 Symfony 缓存和日志路径。大多数人通过设置为"宽松"模式并重新启动操作系统来采取简单的方法。

正确的方法是将 SELinux 保留为"强制"模式,并使用 policycoreutils-python 来更改一些权限。这些说明假设您已经按照 Symfony2 文档使用了 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

相关内容

  • 没有找到相关文章

最新更新