Php

同時執行 mod_php 和 suPHP

  • April 1, 2017

我最近從帶有 5.2.x 的 Debian Lenny 開始,並且能夠對不在 /home/ 中的任何 php 文件使用 mod_php,對 /home/ 中的所有 php 文件使用 suPHP。

我這樣做是因為我在 /var/www/ 中的網站需要一個預設的 php.ini(給了我 php 的所有功能),而且我不想從根目錄更改所有 .php 文件的所有者。我還為所有 /home/ php 文件設置了一個預設的 php.ini,沒有危險功能。

這是我的設置:

   <IfModule mod_suphp.c>
       <Directory /home/>
               AddType application/x-httpd-php .php .php3 .php4 .php5
               suPHP_AddHandler application/x-httpd-php
               suPHP_Engine on

               suPHP_ConfigPath /home/shared/
       </Directory>
   </IfModule>

這很完美,但最近我從 dotdeb 升級到 PHP 到 5.3.5(Lenny 沒有官方的 php 5.3)。這對 lenny 有一些奇怪的問題,例如無法正確顯示錯誤和很少的 tid 位。所以我決定從lenny升級到squeeze。解除安裝 php(隨之而來的是 suphp)並使用新源重新安裝。我現在有 5.3.3-7 和 Debian Squeeze,但我不能再讓 mod_php 和 suPHP 同時執行了。mod_php 將始終有效,並且 apache2 或 suphp 日誌中沒有錯誤。如果我禁用了 mod_php,那麼 suPHP 將起作用。

我做錯了什麼嗎?

通過php_admin_flag engine Offmod_suphp.c. 另外我必須確保我suPHP_Engine off預設使用。

最終結果:

   <IfModule mod_suphp.c>
       <Directory /home/>
               php_admin_flag engine Off
               AddType application/x-httpd-php .php .php3 .php4 .php5
               suPHP_AddHandler application/x-httpd-php
               suPHP_Engine on

               suPHP_ConfigPath /home/shared/
       </Directory>
   </IfModule>

只是對於那些想知道的人,這就是我為/home/shared/php.ini他們將成為每個/home使用者的東西php.ini,除非我在虛擬主機中指定不同:

allow_url_fopen = Off 
display_errors = On 
display_startup_errors = On 
log_errors = On 
error_reporting = E_ALL 
error_log = "/var/log/apache2/php_user_errors.log"
expose_php = Off 
magic_quotes_sybase = Off 
register_globals = Off
open_basedir = "/home:/tmp"
short_open_tag = On
session.save_path = "/tmp"
disable_functions = "phpinfo, apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,curl_exec,curl_multi_exec,dir,disk_free_space,diskfreespace,dl,eval,exec,fsockopen,highlight_file,ini_alter,ini_restore,ini_set,openlog,parse_ini_file,passthru,pclose,popen,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,readfile,set_time_limit,shell_exec,show_source,stream_socket_server,symlink,system,virtual"

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