Apache-2.2

php腳本在apache uid下執行

  • January 4, 2012

我有一個 vps,使用 apache 2 和 php 5 執行 directadmin。直到今天,它都執行良好,因為我發現 PHP 腳本是在 apache:apache 下執行的,而不是在文件的所有者 uid 下執行的。這搞砸了整個系統,但主要問題是我無法弄清楚為什麼 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 可能沒有安裝。

由於您使用的是條件載入語句,因此 suPHP 可能已在 Apache 升級時被刪除。

我不再使用 DirectAdmin 框,但我知道它們曾經在覆蓋自定義配置方面存在問題。

  1. 確認 suPHP 確實安裝在 Apache 中。採用:

httpd -l

列出內置的 apache 模組。或者在您的配置中查找 Load 語句。一種快速的測試方法是註釋條件載入語句,然後嘗試重新啟動 Apache。

  1. 確保在域上啟用了 suPHP,並且使用者/組規範在 httpd 配置中是正確的。(您發布的內容看起來不錯。)
  2. 啟用 suPHP 後,您可能只需將目錄 chown 給正確的使用者即可。

引用自:https://serverfault.com/questions/346712