Итак, это будет сильно зависеть от того, как вы делаете свой PHP.
Есть два типичных подхода к этому с Apache, и каждый из них имеет разные соображения по устранению этой проблемы с разрешениями.
Встроенный php
модуль в апаче
Это самое простое решение заставить Apache работать с PHP. PHP работает в Apache и работает от имени пользователя, сконфигурированного Apache.
sudo apt установить libapache2-mod-php
судо a2enmod php
sudo systemctl перезапустить apache2.service
PHP FPM
Другой вариант — PHP FPM — вы должны установить php-fpm
package, но вам также потребуется дополнительная работа с Apache, чтобы заставить его работать.
sudo apt установить libapache2-mod-fcgid php-fpm
Затем вам нужно включить модуль FCGId в Apache, а также псевдоним
и proxy_fcgi
модули:
Действия sudo a2enmod fcgid псевдоним proxy_fcgi
Для Ubuntu 20.04 PHP равен 7.4, поэтому вам нужно будет добавить это в конфигурацию вашего сервера, где бы вы ни использовали php-fpm
:
<FilesMatch \.php$>
# 2.4.10+ can proxy to unix socket
SetHandler "proxy:unix:/var/run/php/php7.4-fpm.sock|fcgi://localhost"
</FilesMatch>
Это должно быть в пределах вашего <VirtualHost ...>
блокирует везде, где вы используете PHP.
Затем вы должны настроить /etc/php/7.4/fpm/pool.d/www.conf
чтобы заставить его использовать пользователя, которого вы намереваетесь - ищите пользователь = www-данные
строку и настройте ее для нужного пользователя. Я бы прокомментировал эту строку, а затем поместил ее под нее, определенную пользователем, но это изменит используемого пользователя на php-fpm
для чтения/записи.
Любой из этих подходов исправит вашего пользователя/группу PHP, с которой он записывает/создает файлы - это зависит только от того, как вы устанавливаете встроенный модуль PHP - Apache или FPM.