Здесь есть несколько похожих вопросов, такой как этот, но ответ на этот вопрос (и несколько других, которые я прочитал):
пусть PHP создаст сам каталог в первую очередь.
я использую git
на моем сайте, поэтому невозможно разрешить PHP «создавать сам каталог».
Чтобы вытащить изменения, я бегу git pull origin master
команда при входе на мой сервер через SSH, что делает меня владельцем моего файла cpanel user как я.
Мне нужен PHP, чтобы иметь возможность создавать файлы в определенных каталогах. Это единственный способ разрешить это chmod
папки для 777
или есть лучший способ?
Я не очень хорошо понимаю разрешения Linux, но из того, что я прочитал, изменился каталог и права доступа к файлу 777
как правило, не очень хорошая идея. Кроме того, если я chmod
папки для 777
Я подозреваю, что разрешения будут перезаписаны при запуске git pull origin master
Хотя я не проверял это.
user
Apache (или любой другой http-сервер, который вы используете) работает.Было бы вероятно www-data
для apache:
ps aux | grep http | cut -f 1 -d ' '
Эта команда оболочки в порядке:
chown -R www-data FOLDER_PHP_NEEDS_TO_WRITE_TO
Выше будет установлен владелец папки в www-data
по-видимому, давая разрешение на запись для https-сервера для записи туда.
Если вы боитесь потерять контроль над этим каталогом, сделайте это через group
разрешение:
chgrp -R www-data FOLDER_PHP_NEEDS_TO_WRITE_TO
chmod -R g+w FOLDER_PHP_NEEDS_TO_WRITE_TO
Теперь вы все еще являетесь владельцем, в то время как http-сервер может писать туда, потому что он принадлежит этой группе. Вы можете сделать это по-другому, добавив себя в www-data
группы и давая разрешения на запись для этой группы в нужную папку.
Другой вариант — запустить git
как www-data
:
sudo runuser -l www-data -c 'git pull'
Но я бы предложил решение с группой.
Это может быть то, что вы можете использовать — я сам не пробовал, поэтому я не знаю, работает ли это на самом деле:
https://stackoverflow.com/a/3208143/609855