cache:flush cache:clean 上的 Magento 2 错误 |之后需要给777设置权限

Magento 2 errors on cache:flush cache:clean | Need to set permission to 777 afterwards

每次我运行:

php bin/magento cache:flush
php bin/magento cache:clean

我在重新加载页面时收到以下消息:

An error has happened during application run. See exception log for details.

exception.log:

ain.CRITICAL: Exception: Warning: file_put_contents(/var/www/magento2/var/cache//mage-tags/mage---914_CONFIG_SCOPES): failed to open stream: Permission denied in /var/www/magento2/vendor/colinmollenhour/cache-backend-file/File.php on line 663 in /var/www/magento2/vendor/magento/framework/App/ErrorHandler.php:61

当我然后运行:

sudo chmod -R 777 var/ pub/

错误消失了。

我每次清理缓存时怎么会发生这种情况,应该如何解决trace/solve这个问题?

此类问题的根源是相同的:运行 网络服务器的用户不同于 运行 控制台命令的用户。

先决条件

您应该定义您的网络服务器的用户运行。

$ ls -la

这个命令可以 who creates var/cache 等等。

让我们决定 www-data 用户下的网络服务器 运行。

解决方案 1

$ sudo -H -u www-data __some_command_here_

此格式允许您在 web-server 用户下 运行 命令。因此应用程序将具有与服务器相同的权限(用户 www-data)。 所以你命令 php bin/magento cache:flush 转换为

$ sudo -H -u www-data php bin/magento cache:flush

解决方案 2

将网络服务器的用户添加到您的用户到同一组。

$ id
uid=1001(ygl) gid=1002(ygl) groups=1002(ygl),112(nopasswdlogin)
  • 这一项将显示有关当前用户的信息。

    $ sudo usermod -a -G www-data

  • 此命令会将 www-data 添加到您的组名。