PHP設定 · 1 min read · Oct 25, 2025
Fedora 7でのPHP5のSuhosinによる強化 - ページ2
4 Suhosinのインストール
Suhosinはここからダウンロードできます: http://www.hardened-php.net/suhosin/download.html
Suhosinパッチをインストールするには、ソースからPHP5を再コンパイルする必要がありますが、Fedora 7のPHP5.src.rpmパッケージを使用します(rpmbuildコマンドを使用)ので、新しいPHP5.rpmパッケージ(Suhosin付き)を取得してインストールできます。これにより、rpmbuildが適切なPHP5の設定オプションを処理するため、心配する必要はありません。
しかし、まずHardened-PHPプロジェクトのリリース署名鍵のコピーを取得し、GNU Privacy Guardのキーチェーンにインポートします:
wget http://www.hardened-php.net/hardened-php-signature-key.asc
gpg --import < hardened-php-signature-key.asc次に、Fedora 7のミラーから現在インストールされているPHPバージョン(この例では5.2.2)に適したPHP5.src.rpmパッケージを/usr/srcにダウンロードしてインストールします:
cd /usr/src
wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/fedora/linux/releases/7/Fedora/source/SRPMS/php-5.2.2-3.src.rpm
rpm -ivh php-5.2.2-3.src.rpm次のような警告が表示された場合:
warning: group kojibuilder does not exist - using root無視して構いません。
次に、PHPバージョンに適したSuhosinパッチを/usr/src/redhat/SOURCESにダウンロードします(Suhosinのダウンロードページで利用可能なすべてのパッチを見つけることができます):
cd /usr/src/redhat/SOURCES
wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.2-0.9.6.2.patch.gzダウンロードしたパッチのMD5サムがSuhosinのダウンロードページに公開されているものと同じであることを確認します:
md5sum suhosin-patch-5.2.2-0.9.6.2.patch.gzMD5サムが問題ない場合、デジタル署名を次のように確認できます:
wget http://www.hardened-php.net/suhosin/_media/suhosin-patch-5.2.2-0.9.6.2.patch.gz.sig
gpg suhosin-patch-5.2.2-0.9.6.2.patch.gz.sig出力に次の行が表示された場合:
gpg: Good signature from "Hardened-PHP Signature Key"ダウンロードしたパッチは問題ありませんので、続行できます。
次に、Suhosinパッチを解凍し、Fedoraの命名規則に合うように名前を変更し、/usr/src/redhat/SPECS/php.specファイルを修正して、rpmbuildコマンドがPHP5を再構築する際にSuhosinパッチを含めるようにします:
gunzip suhosin-patch-5.2.2-0.9.6.2.patch.gz
mv suhosin-patch-5.2.2-0.9.6.2.patch php-5.2.2-suhosin.patch
cd /usr/src/redhat/SPECS/
vi php.specすべてのパッチがリストされているスタンザにPatch0: php-5.2.2-suhosin.patchを追加し、%setup -qスタンザに%patch0 -p1 -b .suhosinを追加します:
| [...] Source3: macros.php Patch0: php-5.2.2-suhosin.patch Patch1: php-5.1.4-gnusrc.patch [...] %setup -q %patch0 -p1 -b .suhosin %patch1 -p1 -b .gnusrc [...] |
次に、PHP5を再構築します:
rpmbuild -ba php.specインストールされているPHP5モジュールによっては、rpmbuildが新しいパッケージを構築するために必要なパッケージが不足していると不満を言う可能性があります:
[root@server1 SPECS]# rpmbuild -ba php.spec
cat: /usr/include/httpd/.mmn: No such file or directory
error: Failed build dependencies:
aspell-devel >= 0.50.0 is needed by php-5.2.2-3.i386
httpd-devel >= 2.0.46-1 is needed by php-5.2.2-3.i386
pcre-devel >= 4.5 is needed by php-5.2.2-3.i386
uw-imap-devel is needed by php-5.2.2-3.i386
mysql-devel >= 4.1.0 is needed by php-5.2.2-3.i386
postgresql-devel is needed by php-5.2.2-3.i386
unixODBC-devel is needed by php-5.2.2-3.i386
net-snmp-devel is needed by php-5.2.2-3.i386
libxslt-devel >= 1.0.18-1 is needed by php-5.2.2-3.i386
[root@server1 SPECS]#このようなエラーが表示された場合は、次のように不足しているパッケージをインストールします:
yum install aspell-devel httpd-devel pcre-devel uw-imap-devel mysql-devel postgresql-devel unixODBC-devel net-snmp-devel libxslt-develその後、再度rpmbuildを実行します:
rpmbuild -ba php.specこれでPHP5とすべてのインストールされたPHP5モジュールが再コンパイルされ、/usr/src/redhat/RPMS/i386ディレクトリに新しい.rpmパッケージが作成されるはずです。これには時間がかかる場合があるので、しばらくお待ちください。
その後、新しいPHP5パッケージを次のようにインストールできます:
cd /usr/src/redhat/RPMS/i386
rpm -Uvh --force php-*これでSuhosinパッチは完了です。
次に、Suhosin PHP拡張をビルドします。まず、/usr/srcディレクトリにそのソースをダウンロードします(Suhosin拡張のソースはSuhosinのダウンロードページで入手可能です):
cd /usr/src
wget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgz次に、MD5サムと署名を再度確認します:
md5sum suhosin-0.9.20.tgzwget http://www.hardened-php.net/suhosin/_media/suhosin-0.9.20.tgz.sig
gpg suhosin-0.9.20.tgz.sig次に、ソースを解凍し、次のように拡張をビルドします:
tar xvfz suhosin-0.9.20.tgz
cd suhosin-0.9.20
phpize
./configure
make
make installSuhosin拡張を有効にするために、/etc/php.d/suhosin.iniファイルを作成し、その中に次の行を追加します:
vi /etc/php.d/suhosin.ini| extension=suhosin.so |
残るのはApache2を再起動するだけです:
/etc/init.d/httpd restartブラウザで再度info.phpページを呼び出します(例: http://192.168.0.100/info.php)。すべてが正常に行われていれば、ページの2か所にSuhosinが表示されるはずです:


これで完了です。必要に応じてSuhosinを設定できます(http://www.hardened-php.net/suhosin/configuration.htmlを参照)。ただし、Suhosinはデフォルト設定でそのまま動作するため、自分が何をしているのかを理解していることを確認してください。
5 リンク
- Suhosin: http://www.hardened-php.net/suhosin/index.html
- PHP: http://www.php.net
- Fedora: http://fedoraproject.org
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。