Linux/suPHP

suPHP

dokuwiki.fl8.jp転載済み

インストール

# 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"