我正在运行 PHP 还是 suPHP

我正在运行 PHP 还是 suPHP

我正在测试我是否正在运行PHPsuPHP当我发出phpinfo()

我得到了超过 600 行数据。suPHP这里只提到了

<tr><td class="e">Loaded Modules </td><td class="v">core mod_log_config mod_logio prefork http_core mod_so mod_alias mod_auth_basic mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_deflate mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_reqtimeout mod_setenvif mod_status mod_suphp </td></tr>

我继续阅读另一个网站服务器 API 应该CGI 不是 Apache为了运行suPHP

我尝试发布完整的输出,但它超过 30,000 个字符。如果您认为它很重要,我可以尝试放一半。


编辑看来 suPHP 部分工作正常。如果我加载脚本并发出getuserid()或 ,get_current_user()它会返回我的用户信息,而不是www-data。但是,如果我尝试读取/写入没有权限供所有人读取/写入的文件,它会显示failed to open stream: Permission denied。有什么想法可能导致这种情况吗?

答案1

该输出显示您已启用 DSO PHP 模块以及 SuPHP 模块,因此哪个解析器正在运行您的脚本取决于您的 Apache 配置。具体来说,这是由指令定义的AddHandler。您可以检查您的 phpinfo() 以查找定义Server API,如果它显示,CGI则根据您提供的信息,您默认使用 SuPHP。

答案2

我终于弄清楚了问题出在哪里。我没有按照说明禁用正常的 php5 模块这里。我所要做的就是发出命令

a2dismod php5
/etc/init.d/apache2 restart

如果其他人遇到类似的问题,除了以下网站外,这里还有一些其他网站官方网站(完全没用)

初学者安装说明

邮件列表上的安装帮助主题

suPHP 入门

最后,以下是您需要更改的文件以及应应用的更改

将以下内容添加到您的/etc/suphp/suphp.conf文件中。请注意,您的文件可能存储在其他地方,建议查看其他网站/etc/suphp.conf(还请注意,最后可能存在一些冗余,我还没有时间修复这个问题)。

[handlers]
;Handler for php-scripts
application/x-httpd-suphp="php:/usr/bin/php-cgi"
application/x-httpd-php="php:/usr/bin/php-cgi"

;Handler for CGI-scripts
x-suphp-cgi="execute:!self"
x-httpd-suphp="php:/usr/bin/php-cgi"

/etc/apache2/apache2.conf最后,将以下内容添加到文件末尾

suPHP_Engine on
suPHP_AddHandler application/x-httpd-php .php
suPHP_ConfigPath /etc/php5/cgi/

相关内容