Php
同時執行 mod_php 和 suPHP
我最近從帶有 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 Off
將mod_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"