我有基于symfony 3的web。对于部署,我有自己的 bash 脚本。在这个脚本中是像 git pull、清除缓存这样的例程......
在服务器上是: Debian GNU/Linux 9 (stretch(
但是部署后,我可以在prod.log
中看到异常:
[2018-05-11 16:55:36] 请求。关键:未捕获的 PHP 异常 无效参数异常:">
目录 "/var/www/domain.com/var/cache/prod/annotations" 不可写。 在/var/www/domain.com/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php 第 92 行 {"exception":"[object] (InvalidArgumentException(code: 0(: 目录 \"/var/www/domain.com/var/cache/prod/annotations\" 不可写。 at/var/www/domain.com/vendor/doctrine/cache/lib/Doctrine/Common/Cache/FileCache.php:92("} []
但问题是 - 在清除缓存之前和之后,我有命令chmod -R 777 /var
,部署后,如果我查看/var/cache/prod/annotations,我看到新文件的变化时间等于我运行清除缓存的时间(通过 sh 脚本(。
有人有什么想法吗?哪里看什么切克?
如果您的 shell 首先写入app/cache
,然后您打开您的网站,其他部分也应该写入该文件夹,则会发生此错误。
简单的解决方案:将您的 shell 用户添加到您的 Web 服务器使用的组中,可能是www-data
,通过sudo usermod -a -G www-data userName
问题是权限,要修复,请使用以下内容:
setfacl -R -m u:www-data:rX folderProject
setfacl -R -m u:www-data:rwX folderProject/var/cache folderProject/var/logs folderProject/var/sessions folderProject/app/sessions
setfacl -dR -m u:www-data:rwX folderProject/var/cache folderProject/var/logs folderProject/var/sessions folderProject/app/sessions
将文件夹项目替换为您的项目名称。 如果您使用带有 apache 的 Ubuntu,此命令可以解决问题,如果您使用的是另一个 GNU/Linux,请将用户 www-data 更改为您的用户