FreeBSD4でBAMP環境を構築しよう - PHP4のインストールと設定
PHPのインストールはPortsから行います。
cd /usr/ports/lang/php4 make install |
次に、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でエラーになる可能性があります。
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 |
# 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 |
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)の置き場所です。覚えておきましょう。
下の方を見ていくと、拡張機能の名前が太字で出てくるはずなので、確認してください。
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 |