suPHP

提供: ArchWiki
ナビゲーションに移動 検索に移動

suPHP はオーナー権限で PHP スクリプトを実行するためのツールです。Apache モジュール (mod_suphp) と setuid ルートバイナリ (suphp) から構成され、後者が Apache のモジュールから呼び出されて PHP インタプリタを実行しているプロセスの uid が変更されます。

ヒント: suPHP を使うことで、例えば PHP アプリケーションをユーザーのホームディレクトリで管理することができ、(ディレクトリやファイルの作成、アップロードなど) パーミッションの問題を心配しなくてよくなります。

インストール

Arch User Repository から suphpAUR パッケージをインストールしてください。

設定

特定のバーチャルホストで mod_suphp を有効にするには /etc/http/conf/http.conf ファイルに以下のような行を追加してください:

/etc/http/conf/http.conf
#suPHP
LoadModule suphp_module modules/mod_suphp.so

suPHP を使って PHP ファイルを動作させるには以下も追加する必要があります:

/etc/http/conf/http.conf
AddType application/x-httpd-php .php

さらに、以下の行を追加することで mod_suphp がオンになります:

/etc/http/conf/http.conf
suPHP_Engine on

最後に suPHP_AddHandler ディレクティブを指定してください。デフォルトでは mod_suphp は何の mime タイプも処理しません。

/etc/http/conf/http.conf
suPHP_AddHandler application/x-httpd-php

これで suPHP のインストールは完了です。以下のコマンドで HTTPd サーバーを再起動してください:

# systemctl restart httpd
ノート: 上記の設定をグローバルな Apache の設定ファイルに記述した場合、全てのバーチャルホストで mod_suphp が有効になります。

補足情報

mod_suphp と mod_php を同時に実行してはいけません。どちらも CGI スクリプトをウェブサーバーの権限で動作させるモジュールです。

CGI スクリプトを使わない場合や suExec を使用して CGI スクリプトを実行する場合にのみ suPHP を使用してください。

警告: mod_php (php-apache) モジュールの代わりとして suPHP モジュールを使用する場合、php-cgi インタプリタと互換性がない phpMyAdmin などのアプリケーションを使うことはできません。

suPHP と mod_php

suPHP と mod_php を一緒に使いたい場合、別のバーチャルホストやディレクトリを使って suPHP や mod_php を設定するしかありません。

ユーザーディレクトリのみで suPHP を使う

以下ではユーザーの public_html ディレクトリでは suPHP を使って、他のディレクトリでは mod_php を使用するように設定します。

まず最初に php_module が衝突しないように suPHP のハンドル名を変更する必要があります。/etc/suphp/suphp.conf の以下の行を変更してください:

/etc/suphp/suphp.conf
[handlers]
;Handler for php-scripts
application/x-httpd-suphp="php:/usr/bin/php-cgi"

/etc/http/conf/http.conf ファイルに以下の行を追加・編集してください:

/etc/http/conf/http.conf
#suPHP
LoadModule suphp_module modules/mod_suphp.so

それから、ユーザーディレクトリで suPHP モジュールを使うため、/etc/http/conf/extra/http-userdir.conf ファイルに以下を追加:

/etc/httpd/conf/extra/httpd-userdir.conf
<Directory "/home/*/public_html">
...
    DirectoryIndex index.php index.html
    suPHP_Engine on
    AddHandler application/x-httpd-suphp .php
    suPHP_AddHandler application/x-httpd-suphp
...
</Directory>

最後に以下のコマンドで HTTPd サーバーを再起動してください:

# systemctl restart httpd

参照

  • MySQL - MySQL の記事。
  • LAMP - Apache, MySQL, PHP の設定ガイド。
  • PhpMyAdmin - LAMP 環境でよく使われている MySQL のウェブフロントエンド。
  • Adminer - フル機能のデータベース管理ツール。MySQL, PostgreSQL, SQLite, MS SQL, Oracle に対応。
  • Xampp - セルフコンテナ式のウェブサーバー。PHP, Perl, MySQL をサポート。
  • mod_perl - Apache + Perl