带有 suexec/fcgid 的 PHP

带有 suexec/fcgid 的 PHP

httpd.conf 文件:

LoadModule fcgid_module modules/mod_fcgid.so
AddHandler fcgid-script .php
FCGIWrapper /usr/local/php5 .php

# manual
MaxRequestsPerProcess 1000
FcgidMaxProcesses 200
FcgidProcessLifeTime 7200
MaxProcessCount 500
FcgidIOTimeout 400
FcgidIdleTimeout 600
FcgidIdleScanInterval 90
FcgidBusyTimeout 300
FcgidBusyScanInterval 80
ErrorScanInterval 3
ZombieScanInterval 3
DefaultMinClassProcessCount 0
DefaultMaxClassProcessCount 3
MaxRequestLen 20468982

<VirtualHost *>
    ServerName hostname
    DocumentRoot /home/web
    ServerAdmin [email protected]
    <IfModule mod_suphp.c>
        suPHP_UserGroup web web
    </IfModule>
         SuexecUserGroup web web
    UserDir disable
</VirtualHost>

这是我的包装:

#!/bin/sh
exec /usr/local/bin/php

我的错误是:

在 /usr/local/apache2/logs/suexec_log 中

[2019-09-03 06:55:28]: user mismatch (daemon instead of www)

/usr/local/apache2/logs/错误日志

suexec policy violation: see suexec log for more details
[Tue Sep 03 06:55:28 2019] [warn] [client 127.0.0.1] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
[Tue Sep 03 06:55:28 2019] [error] [client 127.0.0.1] Premature end of script headers: phpinfo.php

更新:

我已经编辑:

 /usr/local/apache2/bin/suexec -V
 -D AP_DOC_ROOT="/"
 -D AP_GID_MIN=100
 -D AP_HTTPD_USER="www"
 -D AP_LOG_EXEC="/usr/local/apache2/logs/suexec_log"
 -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
 -D AP_UID_MIN=100
 -D AP_USERDIR_SUFFIX="www"

但是我没有收到任何错误,也没有发现任何东西......

答案1

suexec 文件表明它仅在底层用户是 www 时才会起作用。该网站似乎正在作为守护进程运行。您可以通过在 httpd.conf 文件中输入用户 www 来更改此设置。顺便说一句,该 httpd.conf 文件看起来很空,可能在您找到它的目录中的其他地方包含或附加了其他文件。这可能是已经放置用户指令的地方。

您的包装器 shell 肯定会返回错误,因为它所做的只是启动 php 程序。我不确定如果没有要运行的程序,它会做什么。Apache 期望任何程序的输出都包含正确的 HTTP 标头,这些标头不会自动生成。

相关内容