php脚本运行在Apache UID下

我有一个VPS,运行与Apache 2和PHP 5的directadmin。它一切正常,直到今天,因为我发现,PHP脚本是在Apache下执行:阿帕奇,而不是文件的所有者用户。 这搞砸了整个系统,但主要的问题是,我不明白为什么会suphp突然停止工作?

一些信息:

root # php -v PHP 5.2.17 (cli) (built: Aug 17 2011 21:02:28) Copyright (c) 1997-2010 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies 

httpd.conf文件

 User apache Group apache ... <Directory "/var/www/html"> Options -Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all <IfModule mod_suphp.c> suPHP_Engine On suPHP_UserGroup webapps webapps SetEnv PHP_INI_SCAN_DIR </IfModule> </Directory> <VirtualHost 192.168.56.55:80 > ... SuexecUserGroup robert robert ... <Directory /home/robert/domains/testing.com/public_html> Options +Includes -Indexes php_admin_flag engine ON </Directory> </VirtualHost> 

额外的/的httpd-PHP-handlers.conf

 <FilesMatch "\.(inc|php|php3|php4|php5|php6|phtml|phps)$"> AddHandler application/x-httpd-php .inc .php .php3 .php4 .php5 .phtml AddHandler application/x-httpd-php-source .phps </FilesMatch> 

每当我运行/ var / www / html,或home / robert / domains / testing.com / public_html(文件所有者robert:robert)内的phpinfo(),结果是一样的: User/Group apache(48)/48

我如何解决这个问题?

  • 和suphp日志是空的:(

suPHP很可能没有安装。

由于您正在使用条件加载语句,因此在升级Apache时可能已经删除了suPHP。

我不再在DirectAdmin框中工作,但我知道他们曾经在覆盖自定义configuration时遇到问题。

  1. 确认suPHP确实安装在Apache中。 使用:

    httpd -l

列出内置的apache模块。 或者在您的configuration中查找Load语句。 快速testing的方法是注释条件加载语句,然后尝试重新启动Apache。

  1. 确保在域上启用了suPHP,并确保httpdconfiguration中的用户/组规格正确。 (你发布的内容看起来不错)

  2. 一旦suPHP被启用,你可能只是将目录切换到正确的用户。

老实说,(从pipe理员的angular度来看)suphp是一个坏主意,也是危险的。 双倍共享系统。 这就是说…你确定suphp正在被加载? 你有一个很好的格式化的语句,如果模块无法加载或丢失,将被完全忽略。