Пользователь Suexec / Apache не является пользователем php-fpm.
в моем пуле php-fpm:
[cdnmin]
user = cdnmin
group = cdnmin
listen = /run/php/php7.0-fpm.cdnmin.sock
listen.owner = cdnmin
listen.group = cdnmin
listen.mode = 0666
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
Я создаю index.php для теста:
<?php
file_put_contents('test.txt','Test');
echo exec('whoami');
echo '<hr>Current script owner: ' . get_current_user();
phpinfo();
?>
php-fpm работает, но имеет неправильное разрешение, так как мой error.log show
AH01071: Got error 'PHP message: PHP Warning: file_put_contents(test.txt):
failed to open stream: Permission denied ...'
php 'get_current_user ()' возвращает 'cdnmin', который является пользователями пула php-fpm. но 'whoami' возвращает www-данные (apache2)
внутри / run / php:
srw-rw-rw- 1 cdnmin cdnmin 0 Jan 15 15:18 php7.2-fpm.cdnmin.sock
Рабочий каталог (/ var / www / cdn) принадлежит cdnmin: cdnmin, и его номер 755.
SuexecUserGroup cdnmin cdnmin
включен директива virtualhost (apache).
Я могу выяснить, почему 'whoami' и get_current_user () не совпадают.
Что я пропустил?
Я использую ubuntu 18.04, который имеет нет поддержки fastcgi. Bionic с использованием proxy_fcgi. Я не вижу ошибок, исходящих от fastcgi, потому что я использую, поэтому он всегда отправляет запрос по умолчанию (www.conf), поэтому он становится «www-data».
Проблема решена.
Вот какой-то снипсет
my virtualhost.conf:
<VirtualHost *:80>
DocumentRoot /var/www/cdn
ServerName cdn.wx.dz.co
ServerAdmin webmaster
ErrorLog /var/www/cdn/.log/error.log
CustomLog /var/www/cdn/.log/access.log combined
SuexecUserGroup cdnmin cdnmin
<Directory /var/www/cdn>
Options +ExecCGI
IncludeOptional /dbc/vhost/common-set.conf
</Directory>
<Directory /var/www/cdn/.log>
deny from all
</Directory>
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler "proxy:unix:/run/php/php7.2-fpm.cdnmin.sock|fcgi://localhost/"
</FilesMatch>
</VirtualHost>
В fpm / pool.d:
[cdnmin]
user = cdnmin
group = cdnmin
listen = /run/php/php7.2-fpm.cdnmin.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0666
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
Обратите внимание на:
listen.owner = www-data
listen.group = www-data
listen.mode = 0666