Apache-2.2
php腳本在apache uid下執行
我有一個 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 框,但我知道它們曾經在覆蓋自定義配置方面存在問題。
- 確認 suPHP 確實安裝在 Apache 中。採用:
httpd -l
列出內置的 apache 模組。或者在您的配置中查找 Load 語句。一種快速的測試方法是註釋條件載入語句,然後嘗試重新啟動 Apache。
- 確保在域上啟用了 suPHP,並且使用者/組規範在 httpd 配置中是正確的。(您發布的內容看起來不錯。)
- 啟用 suPHP 後,您可能只需將目錄 chown 給正確的使用者即可。