サーバー設定 · 1 min read · Dec 16, 2025
suPHPをPHP4およびPHP5で設定する方法 - ページ2
4 PHP4-CGIのインストール
まず、suPHPをPHP4で使用する方法を説明し、その後このチュートリアルでPHP5での使用方法を説明し、最後に両方を同時にインストールする方法を説明します。
前述のように、suPHPはApacheモジュールの代わりにCGIとしてPHPを必要とします。したがって、次のようにphp4-cgiパッケージをインストールします:
apt-get install php4-cgi5 suPHPのインストール
次に、suPHPのソースをダウンロードして解凍します。この執筆時点での最新バージョンは0.6.1でした:
cd /tmp
wget http://www.suphp.org/download/suphp-0.6.1.tar.gz
tar xvfz suphp-0.6.1.tar.gz
cd suphp-0.6.1次に、src/apache2/mod_suphp.cを編集する必要があります。そうしないと、次のようなエラーが発生します:
| Forcing reload of web server: Apache2Syntax error on line 49 of /etc/apache2/sites-enabled/000-default: suPHP_AddHandler not allowed here |
ApacheのvhostsにいくつかのsuPHPディレクティブを追加するときに発生します。ファイルを開き、316行目と317行目(使用しているsuPHPのバージョンが0.6.1以外の場合、行番号は異なる場合があります)でACCESS_CONFという文字列を見つけます。それをRSRC_CONF | ACCESS_CONFに置き換えて、次のように2行を見えるようにします:
vi src/apache2/mod_suphp.c| AP_INIT_ITERATE("suPHP_AddHandler", suphp_handle_cmd_add_handler, NULL, RSRC_CONF | ACCESS_CONF, "mod_suphpにこれらのMIMEタイプを処理させる"), AP_INIT_ITERATE("suPHP_RemoveHandler", suphp_handle_cmd_remove_handler, NULL, RSRC_CONF | ACCESS_CONF, "mod_suphpにこれらのMIMEタイプを処理させない"), |
(Windowsシステムでファイルを編集することを好む場合は、ファイルをLinuxシステムに戻す前にUnix改行で保存してください!)
次に、suPHPをコンパイルしてインストールします:
./configure --prefix=/usr --sysconfdir=/etc --with-apache-user=www-data --with-setid-mode=paranoid --with-apxs=/usr/bin/apxs2
make
make install次に、設定ファイル/etc/suphp.confを作成する必要があります。これは、ソースに付属のテンプレートを単純にコピーすることで行えます:
cp /tmp/suphp-0.6.1/doc/suphp.conf-example /etc/suphp.conf/etc/suphp.confにいくつかの変更を加える必要があります。webserver_userの値をwww-dataに設定します(これはDebianのデフォルトのApacheパッケージのApacheユーザーのユーザー名です)、そしてx-httpd-phpには/usr/bin/php4-cgiというphp4-cgiバイナリを指定する必要があります。最終的なファイルは次のようになります:
vi /etc/suphp.conf| [global] ;ログファイルへのパス logfile=/var/log/suphp.log ;ログレベル loglevel=info ;Apacheが実行しているユーザー webserver_user=www-data ;すべてのスクリプトが存在する必要があるパス docroot=/ ;スクリプトを実行する前にchroot()するパス ;chroot=/mychroot ;セキュリティオプション allow_file_group_writeable=false allow_file_others_writeable=false allow_directory_group_writeable=false allow_directory_others_writeable=false ;スクリプトがDOCUMENT_ROOT内にあるかどうかを確認 check_vhost_docroot=true ;小さなエラーメッセージをブラウザに送信 errors_to_browser=false ;PATH環境変数 env_path=/bin:/usr/bin ;設定するumask、8進数で指定 umask=0077 ;最小UID min_uid=100 ;最小GID min_gid=100 [handlers] ;phpスクリプト用のハンドラー x-httpd-php=php:/usr/bin/php4-cgi ;CGIスクリプト用のハンドラー x-suphp-cgi=execute:!self |
次に、Apacheの設定にsuPHPモジュールを追加する必要があります。次の行を/etc/apache2/httpd.confに追加します:
vi /etc/apache2/httpd.conf| LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so |
次に、Apacheを再起動します:
/etc/init.d/apache2 restart6 Apacheの設定
この章では、IPアドレス1.2.3.4のwww.example.comというウェブサイトがあり、ドキュメントルートが/var/wwwで、次のvhost設定があると仮定します:
| |
www.example.comのvhostにsuPHPを有効にし、testuserというユーザーとtestというグループとしてPHPスクリプトを実行させるために、vhostを次のように変更します:
| |
AddHandler x-httpd-phpはsuPHP_AddHandler x-httpd-phpを参照し、次に/etc/suphp.confのx-httpd-php行を参照します。これは、拡張子が.php、.php3、.php4、.php5のスクリプトが/usr/bin/php4-cgiによって解釈されることを意味します。
Apacheを再起動します:
/etc/init.d/apache2 restart次に、シンプルなphpinfo()スクリプトを作成し、ブラウザでアクセスします:
vi /var/www/info.php| |
ブラウザでhttp://www.example.com/info.phpにアクセスすると、PHP4が実行されていることがわかります:

問題が発生した場合は、/var/log/suphp.logおよび/var/log/apache2/error.logでエラーを確認してください。ほとんどの場合、/etc/suphp.confの適切なオプションを変更するか、ファイル/ディレクトリの権限を変更することで修正できます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。