FreeBSD4でBAMP環境を構築しよう - PHP4のインストールと設定

初出:2005/04/09
更新:2005/04/09

1.PHPのインストール

PHPのインストールはPortsから行います。
cd /usr/ports/lang/php4
make install
するとオプション画面が表示されます。Apache2を使う場合は「Use apache 2.x instead of apache 1.3.x」に[×]マークのチェックを入れます(スペースキーでオン・オフする)。他のオプションはチェックを外しましょう。
TabキーでOKボタンへ移動してEnterキーを押します。あとはインストールが終わるまでじっと待ってください。

次に、PHPの拡張機能をインストールします。
LinuxでPHPをインストールしたことがある人は、configureに拡張機能を指定したと思います。
それに対して、PortsはPHPの基本機能と拡張機能を完全に分離しているため(PHPマニュアルに「標準で使える」と書いてある機能でさえも分離されている)、個別にインストールします。
cd /usr/ports/lang/php4-extensions
make WITHOUT_X11=yes install

すると、拡張機能の一覧が表示されます。[×]マークの付いている機能がインストールされます。スペースキーを押して有効・無効を切り替えることが出来ます。
まず、デフォルトでチェックの付いている機能についてはそのままでいいでしょう。それらはPHPマニュアルに「標準で使える」と書かれている機能だからです。
次に、インストールすべき機能は「mbstring」と「MySQL」です。mbstringはPHPで日本語を扱うために必要であり、MySQLはPHPからMySQLをコントロールするために必要です。
PHPで画像の加工を行う場合は「GD」にチェックを付けましょう。使う予定がなくても、とりあえず入れておくと後々いいかもしれません。

必要な機能にチェックを入れたら、TabキーでOKボタンへ移動し、エンターキーを押します。あとはインストールが終わるまでじっと待つのみです。
※注意:Portsをフルインストールしてないと、拡張機能のmakeでエラーになる可能性があります。

2.Apacheへの登録

PHPはApacheのモジュールとして動作します。そのため、PHPが動くようにhttpd.confを設定します。

httpd.confを開きます。
(Apache1の場合は)
ee /usr/local/etc/apache/httpd.conf
(Apache2の場合は)
ee /usr/local/etc/apache2/httpd.conf

PHPモジュールをApacheで動作させるため、LoadModuleディレクティブを追加します(すでに記述されているかもしれません)。
#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module libexec/mod_foo.so
(略)
LoadModule php4_module        libexec/apache/libphp4.so

さらにApache1.3ではAddModuleディレクティブも追加します(すでに記述されているかもしれません)。
# Reconstruction of the complete module list from all available modules
# (static and shared ones) to achieve correct module execution order.
# [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]
ClearModuleList
(略)
AddModule mod_php4.c

AddTypeディレクティブで「.php」拡張子を関連づけるよう追加します(すでに記述されているかもしれません)。
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

DirectoryIndexディレクティブに「index.php」を追加しておきましょう。
DirectoryIndex index.php index.html index.htm

すでにApacheを起動している場合は、再起動します。
apachectl graceful

3.PHPの動作確認

PortsからApacheをインストールした場合、「/usr/local/var/www」がドキュメントルートなので、そこへ「phpinfo.php」ファイルを作成します。
ee /usr/local/var/www/phpinfo.php

以下のPHPコードを書きます。
<?php
  phpinfo();
?>
保存しましょう。

ブラウザでアクセスしてみます。
http://(サーバーのIPアドレス)/phpinfo.php

PHP情報が表示されましたか?
一番上の方に「Configuration File (php.ini) Path」という項目があります。そのディレクトリがPHPの設定情報ファイル(php.ini)の置き場所です。覚えておきましょう。
下の方を見ていくと、拡張機能の名前が太字で出てくるはずなので、確認してください。

4.PHPの基本設定

PHPの設定は「php.ini」ファイルで行います。Portsからインストールするとファイルの場所は「/usr/local/etc/php.ini」となります。
しかし、初期の段階では「php.ini」は入っておらず、代わりにテンプレートとして「php.ini-dist」と「php.ini-recommended」が入っています。このどちらかを「php.ini」にリネームして使います。

両者のテンプレートの違いは、「php.ini-recommended」が一般用なのに対し、「php.ini-dist」が開発者用という点です。もう少し詳しく言うと、開発者用の場合はPHP実行時にエラーになるとエラー箇所が表示されますが、一般用は表示されません。
エラー箇所を表示することはセキュリティ上あまり好ましくないので、普通は一般用を使いましょう。

テンプレートをコピーします。
cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini

設定ファイルを開きます。
ee /usr/local/etc/php.ini

とりあえず行うことは、日本語の設定です。「mbstring」セクションを変更します。
FreeBSDの場合は文字コードが「EUC」なので、それに合わせます。PHPソースコードや出力されるHTMLの双方ともEUCが使われることを想定しています。
[mbstring]
; language for internal character representation.
mbstring.language = Japanese

; internal/script encoding.
; Some encoding cannot work as internal encoding.
; (e.g. SJIS, BIG5, ISO-2022-*)
mbstring.internal_encoding = EUC-JP

; http input encoding.
mbstring.http_input = auto

; http output encoding. mb_output_handler must be
; registered as output buffer to function
mbstring.http_output = EUC-JP

; enable automatic encoding translation accoding to
; mbstring.internal_encoding setting. Input chars are
; converted to internal encoding by setting this to On.
; Note: Do _not_ use automatic encoding translation for
;       portable libs/applications.
mbstring.encoding_translation = Off

; automatic encoding detection order.
; auto means
mbstring.detect_order = auto

; substitute_character used when character cannot be converted
; one from another
mbstring.substitute_character = none;

すでにApacheを起動している場合は、再起動します。
apachectl graceful

戻る


Copyright © 2005 H'Imagine.
All rights reserved.