Shopware 6 与我们的网络开发设置(Apache 和 ACL)不兼容

Shopware 6 incompatible with our web dev setup (Apache & ACLs)

我们在 Ubuntu 20.04 上的 Web 开发设置如下所示:

这通常会导致问题,例如当 CLI 创建一个Apache 稍后尝试更改的文件。

多年来(即使用 Magento 2、Contao、Laravel、......在我们开始使用 Shopware 6 之前)我们在项目文件夹中使用以下命令运行良好,使用 Linux ACL:

export FOLDER=projects && sudo setfacl -Rm u:$USER:rwx $FOLDER && sudo setfacl -Rm u:www-data:rwx $FOLDER && sudo setfacl -Rm d:u:$USER:rwx $FOLDER && sudo setfacl -Rm d:u:www-data:rwx $FOLDER && sudo chmod 600 config

因此 ACL 设置正确并且访问适用于网络服务器和 CLI 命令。

然后是 Shopware。

构建或更改主题时,底层 Flysystem 会尝试设置文件的可见性(权限)。虽然您可以使用上面的 setfacl 技巧正确 read/write 文件,但 chmod 仅适用于文件所有者(即“dev”)。

所以我们得到:

detail: "Warning: chmod(): Operation not permitted"
meta: {trace: [,…], file: 
"/home/dev/projects/example.com/vendor/league/flysystem/src/Adapter/Local.php",

我们想知道对此有什么优雅的解决方案?其他人如何解决这个问题?

我们正在考虑的方法:

我们决定 运行 Apache 和 FPM 在登录用户下进行处理。为避免安全问题,Apache 应首先绑定到 127.0.0.1:

/etc/apache2/ports.conf

Listen 127.0.0.1:80
Listen ::1:80

<IfModule ssl_module>
        Listen 127.0.0.1:443
        Listen ::1:443
</IfModule>

接下来,在 /etc/apache2/envvars 中,我们将变量 APACHE_RUN_USERAPACHE_RUN_GROUP 设置为登录用户 dev

对于 FPM 我们设置了所有 /etc/php/*/fpm/pool.d/www.conf

user = dev
group = dev
listen.owner = dev
listen.group = dev

最后我们重新启动 apache 并处理 FPM 并确保项目文件归登录用户所有。

您可能还想删除 www-data 用户(或 chown 他们)的旧会话

sudo rm /var/lib/php/sessions/*