我正在运行PHP或suPHP

我正在testing,看看我是否运行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 。 任何想法可能导致这个?

该输出显示您同时启用了DSO PHP模块和SuPHP模块,因此哪个parsing器运行您的脚本取决于您的Apacheconfiguration。 具体来说,这是由AddHandler指令定义的。 你可以检查你定义的Server API phpinfo(),如果它说CGI然后根据你提供的信息,你是默认SuPHP。

我终于明白了问题所在。 我没有按照这里所描述的禁用正常的php5模块。 我所要做的只是发出命令

 a2dismod php5 /etc/init.d/apache2 restart 

如果其他人有类似的问题,这里有几个网站,除了官方网页 (这是完全无用的)

初学者的安装说明

安装帮助线程在邮件列表上

开始使用suPHP

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

将以下内容添加到您的/etc/suphp/suphp.conf文件中。 注意你可能存储在其他地方,其他站点build议查看/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/