在浏览器或 cli 中运行 dev/build 时出现权限错误,具体取决于我上次“修复”它的方式。
网络服务器是 www-data 部署通过 ssh 作为“beanstalk”进行,并且该用户是唯一使用 cli 进行开发/构建的用户,如下所示:
php vendor/silverstripe/framework/cli-script.php dev/build flush=1
我无法更改网络服务器或部署服务的用户。
为了在它混淆时解开它,以便我可以通过 cli 运行它,我必须将这些文件的所有权更改为 beanstalk:www-data :
/var/www/stage/public_html/.graphql-generated/
/var/www/stage/public_html/public/assets/.protected/.htaccess
/var/www/stage/public_html/public/assets/.htaccess
/var/www/stage/public_html/public/asset/404-error.html
/var/www/stage/public_html/public/asset/500-error.html
然后,为了避免进一步的灾难,永远不要通过网络浏览器运行 dev/build?flush,这是使用 silverstripe 时的一个特殊限制,因为它是修复所有问题的首选操作!
多年来还有很多其他人面临同样的问题:
例如 https://forum.silverstripe.org/t/chmod-operation-not-permission-vendor-league-flysystem/2020
存储库中有一些活动可以解决此问题,但我找不到文档在哪里使用它,例如设置 $default_server 以及它有何帮助。
https://github.com/silverstripe/silverstripe-assets/issues/81
如何设置权限/配置 silverstripe 以允许 www-data 或 beanstalk 运行开发/构建?
如果我们有
sudo
权限,我们可以在 php
命令之前加上 sudo -u www-data
。这将以 php
用户身份运行 www-data
命令。
sudo -u www-data php vendor/silverstripe/framework/cli-script.php dev/build flush=1