[英]How to enable suexec on a virtual host?
我使用 Apache2.2 和 FastCgi 来运行 PHP 代码(使用 php-fpm)。
我的 FCGI 配置如下并且工作正常:
User apache
Group apache
LoadModule fastcgi_module modules/mod_fastcgi.so
FastCgiIpcDir /var/run/mod_fastcgi
FastCgiConfig -idle-timeout 20 -maxClassProcesses 1
AddHandler php-script .php
Action php-script /php5-fcgi
AddType application/x-httpd-php .php
<Location "/php5-fcgi">
Order Deny,Allow
Deny from all
Allow from env=REDIRECT_STATUS
</Location>
我的虚拟主机配置如下并且工作正常:
<VirtualHost XX.XX.XXX.XXX:80>
DocumentRoot "/srv/apache/test"
ServerName my.domain.com
ErrorLog /srv/apache/test/logs/test.log
DirectoryIndex index.php
LogLevel debug
<Directory "/srv/apache/test/www">
Options +Indexes
Order allow,deny
Allow from all
</Directory>
Alias /php5-fcgi /var/www/cgi-bin/test/php.fcgi
FastCgiExternalServer /var/www/cgi-bin/test/php.fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
<Directory "/var/www/cgi-bin/test">
Options +ExecCGI
SetHandler fastcgi-script
Order Deny,Allow
Allow from env=REDIRECT_STATUS
</Directory>
</VirtualHost>
显示了我的测试页面上的 phpinfo()。 现在我想让它与 Apache 的 Suexec mod 一起工作。 所以我在 apache 配置中添加了以下几行:
# Into my virtualhost config
SuexecUserGroup www-test www-test
# Into my fastcgi config
FastCgiWrapper On
然后我向www-test
用户显示我的 fcgi 脚本( /var/www/cgi-bin/test/php.fcgi
)和我的文档根目录( /srv/apache/test
)。
我重新启动了 httpd 和 php-fpm 服务,刷新了我的测试页面,但出现了错误 500,并显示以下日志:
==> /var/log/httpd/error_log <==
suexec failure: could not open log file
fopen: Permission denied
[Tue Nov 10 21:35:48 2015] [warn] FastCGI: (dynamic) server "/var/www/cgi-bin/test/php.fcgi" (pid 29704) terminated by calling exit with status '1'
[Tue Nov 10 21:35:53 2015] [warn] FastCGI: (dynamic) server "/var/www/cgi-bin/test/php.fcgi" (uid 505, gid 506) restarted (pid 29711)
==> /srv/apache/test/logs/test.log <==
[Tue Nov 10 21:36:05 2015] [error] [client 90.XXX.30.XX] FastCGI: comm with (dynamic) server "/var/www/cgi-bin/test/php.fcgi" aborted: (first read) idle timeout (20 sec)
[Tue Nov 10 21:36:05 2015] [error] [client 90.XXX.30.XX] FastCGI: incomplete headers (0 bytes) received from server "/var/www/cgi-bin/test/php.fcgi"
你知道我可能错过的配置吗?
编辑:我已经编辑了我的 Vhost 指令之一,如下所示:
FastCgiExternalServer /var/www/cgi-bin/test/php.fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -user www-test -group www-test
现在我的测试页面正在运行,但是我用 php 执行了whoiam
命令,我得到了 apache 用户而不是我的 Suexec 用户(www-test)。
你知道我的 Suexec 配置不起作用的原因吗?
PHP FPM 需要配置为使用特定用户。
确保user
池配置中的值与您希望 PHP 执行的 Unix 用户相匹配。 通常它默认为www-data
但根据您编译 PHP 的方式,这可能已更改为www-user
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.