Suexec/Apache 用户不是 php-fpm 'user'。
在我的 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 所示
AH01071: Got error 'PHP message: PHP Warning: file_put_contents(test.txt):
failed to open stream: Permission denied ...'
php 'get_current_user()' return 'cdnmin' 这是 php-fpm 池用户。但 'whoami' 返回 www-data (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
在虚拟主机的 (apache) 指令上。
我可以找出为什么 'whoami' 和 get_current_user() 不一样。
我错过了什么?
我正在使用不支持 fastcgi 的 ubuntu 18.04。仿生使用proxy_fcgi。我没有看到来自 fastcgi 的任何错误,因为我使用它总是将请求发送到默认值(www.conf),这就是它变成“www-data”的原因。
问题就解决了。
这里有一些片段
我的 virtualhost.conf :
在 fpm/pool.d 中:
注意: