Я хочу сделать папку всегда доступной для записи с помощью PHP.

Я временно изменил разрешение папки на 777, но содержимое папки загружается пользователем ftp, поэтому каждый раз при повторном запуске сценария я получаю следующее:

Warning: file_get_contents(/var/www/html/.../file.txt): failed to open stream: Permission denied in /var/www/html/.../autoimport.php on line 25

То же самое происходит со мной в этом сценарии, где я показываю содержимое error.log. Я изменяю его на 777, но когда он создается заново, я снова теряю доступ.

Warning: fopen(/var/log/apache2/error.log): failed to open stream: Permission denied in /var/www/html/admin/errorlog.php on line 48
Could not get lines from file - /var/log/apache2/error.log

1 ответ1

1

Обычно я делаю это в настройках сервера, чтобы создать группу для веб-сайта, а затем использовать комбинацию setgid и umask, чтобы убедиться, что файлы остаются доступными для записи приложениями, которые я хочу. Пошаговое руководство ниже:

1/ Создайте новую группу для вашего сайта:

$ sudo groupadd web-grp

2/ Добавьте пользователя, от имени которого работает веб-сервер:

$ sudo gpasswd -a www-data web-grp

3/ выберите каталоги и файлы, к которым у сервера должен быть доступ:

$ sudo chown -R :web-grp /path/to/website

4/ Установите бит gid и другие разрешения для этих каталогов:

$ sudo chmod -R ug+rw /path/to/website
$ find /path/to/website -type d -exec chmod g+xs {} \;

5/ Установите umask вашей ftp-программы на 002 . Это будет зависеть от вашего FTP-клиента и сервера, ищите, чтобы выяснить, как сделать это для вашей конкретной настройки.

6/ Перезагрузите веб-сервер, чтобы получить разрешение новой группы:

$ sudo service apache2 restart

Интересно, что бит setgid для этих каталогов приведет к тому, что новые файлы, созданные в каталогах, по умолчанию будут иметь одну и ту же группу. Это означает, что вам не нужны разрешения 777 - это означает, что вы обладаете большей безопасностью, а также системой, которая должна продолжать работать.

umask часть также важна. Новые файлы будут иметь разрешенные биты в umask , поэтому если ваш umask равен 022 , новые файлы не будут доступны для групповой записи, и все будет работать не очень хорошо.

Я использую эту установку очень успешно в течение ряда лет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .