目次

mod_suphp

インストール

 # yum install mod_suphp

設定ファイル修正

 # vi /etc/suphp.conf
 umask=0077
       ↓ アップロードされたファイルなど、600→644へ
 umask=0022
 
 ;x-httpd-php=php:/usr/bin/php
       ↓
 x-httpd-php="php:/usr/bin/php-cgi"
 
 # vi /etc/httpd/conf.d/suphp.conf
 suPHP_Engine off
       ↓ コメントアウト外す
 suPHP_Engine on
 
 # suPHP_AddHandler x-httpd-php
      ↓ コメントアウト外す
 suPHP_AddHandler x-httpd-php

Apache再起動

 # service httpd restart

with-setid-mode

yumからインストールした場合

デフォルトではparanoidになっています。
コンパイルオプション

 --with-setid-mode=MODE:
   MODEは下記のいずれかを選択します。
   "owner":    ownerのUID/GIDでスクリプトを実行します。
   "force":    Apacheで設定されたUID/GIDでスクリプトを実行します。
               (Apache 2を使用している場合のみサポート)
   "paranoid": ownerのUDI/GIDでスクリプトを実行しますが、Apacheで設定された
               UDI/GIDと一致するかどうかをチェックします。

◆こんな感じで設定する必要があります。

 <VirtualHost *:80>
     ServerAdmin matsui@flat8.co.jp
     DocumentRoot /home/hogehoge/public_html
     ServerAlias www.flat8.co.jp
     ServerName www.flateight.com
     suPHP_UserGroup hogehoge users
 </VirtualHost>

suPHPの環境変数

※suphpの場合は、環境変数を設定する場合もヴァーチャルホスト毎に行う。

エラー(Unknown Interpreter)

こんなエラーが出てしまう。

 SecurityException in Application.cpp:511: Unknown Interpreter: php

◆対応

/etc/suphp.confのx-http-phpの所をダブルクォートで囲んでやると動作するらしい。

 # vi /etc/suphp.conf
 ;x-httpd-php=php:/usr/bin/php-cgi
       ↓
 x-httpd-php="php:/usr/bin/php-cgi"

セッション関係のエラー

suphpによって書き込む権限が変わるから、セッション関係でエラーが出てしまう。

 PHP Warning:  session_start() [<a href='function.session-start'>function.session-start</a>]: open(/var/lib/php/session/sess_8ei24n25r7pg56vce3cp8ifnu3, O_RDWR) failed: Permission denied (13)

◆対応

セッションのパスを書き込み出来る場所に変更してあげる。

 # vi /etc/php.ini
 session.save_path = "/var/lib/php/session"
       ↓
 session.save_path = "/tmp"