我在这里看到了一些类似的问题,但是给出的解决方案似乎都不起作用...想知道它们是否过时,或者这种情况是否有所不同...因此我想开一个新线程来讨论一下。
我遇到了一个令人沮丧的问题,在每次执行 git pull
后,它会将所有权更改为拉取者的用户。然后会显示以下错误:
Warning:file_get_contents(/var/www/html/wp-content/themes/<my-theme>/resources/views/<changed-file>):failed to open stream: Permission denied in /var/www/html/wp-includes/class-wp-theme.php on line 1207
只能通过在更改的文件上运行chown www-data
来修复。
当更多人开始在网站上工作时,或者重要文件被更改(如默认模板/header/footer..),就会成为一个问题,网站会变空白直到运行 chown 命令。
网站详细信息
Laravel,wordpress,ubuntu 18,armor hosting
Git repo 存储在自定义主题中
我尝试了一些解决方案,但是似乎没有任何一个起作用(也许是因为实施方式不正确...)
我尝试过的解决方案
1:将 filemode 设置为 false - 我在本地机器和相关服务器上将 filemode 设置为 false。我也尝试将其更改为 "fileMode"。
2:实现 post-update 钩子 - 我添加了一个 post-update 钩子来自动更新文件权限/所有权。以下是脚本(请注意,git repo 存储在自定义主题中):
#!/bin/sh
# default owner user
OWNER="www-data:www-data"
# changed file permission
PERMISSION="664"
# web repository directory
REPO_DIR="/var/www/html/wp-content/themes/quorum-theme"
# remote repository
REMOTE_REPO="origin"
# public branch of the remote repository
REMOTE_REPO_BRANCH="master"
cd $REPO_DIR || exit
unset GIT_DIR
files="$(git diff-tree -r --name-only --no-commit-id HEAD@{1} HEAD)"
git merge FETCH_HEAD
for file in $files
do
sudo chown $OWNER $file
sudo chmod $PERMISSION $file
done
exec git-update-server-info
如果有其他值得尝试的内容,或者您注意到我的代码存在问题,请告知我...
祝一切顺利,
Jill