Я видел здесь несколько похожих вопросов, но ни одно из приведенных решений, похоже, не работает ... интересно, устарели ли они, или этот случай каким-то образом отличается ... поэтому я хотел открыть новая ветка, чтобы поговорить об этом.
Я столкнулся с неприятной проблемой, когда каждый раз, когда я выполняю и 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
в измененном файле.
Это будет становится проблемой, когда над сайтом начинает работать больше людей, или когда изменяются важные файлы (шаблон / заголовок / нижний колонтитул по умолчанию ..), и сайт становится пустым, пока не будет запущен chown.
Сайт подробности
Laravel, wordpress, ubuntu 18, хостинг брони
Git репо, хранящееся в настраиваемой теме
Я пробовал несколько решений, но похоже, что ни один из них не работает (возможно, потому, что они реализованы неправильно ..)
Решения, которые я пробовал
1: установить для filemode значение false - я установил для filemode значение false, локально и глобально, на моем локальном компьютере и рассматриваемом сервере. Я тоже пробовал изменить регистр на "fileMode".
2: реализовать ловушку после обновления - я добавил ловушку после обновления, чтобы автоматически обновлять права / права собственности на файл. Вот сценарий (обратите внимание, что репо git находится в настраиваемой теме):
#!/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
Сообщите мне, есть ли еще что-то, что стоит попробовать, или если вы заметили проблему с моим кодом ...
Всего наилучшего,
Джилл