月別アーカイブ: 2012年3月

.htaccessを使ってphp.iniの有効範囲を拡張する

前回の続きです。ユーザ側で用意したphp.iniは、レンタルサーバ側で特別な設定をしていない限りその有効範囲が同ディレクトリ内に制限されます。つまりディレクトリを多数用意するサイト作りではユーザが作成するフォルダ毎にphp.iniを用意せねばならず、ファイル構成が冗長になってしまいます。そこでApacheの設定ファイルである.htaccessを使用して、任意の箇所に配置されたphp.iniファイルの設定が.htaccessファイルを置いたディレクトリと下位のディレクトリに適用されるように変更してみましょう。

.htaccessファイルの名前は拡張子も含めて.htaccessになります。テキストエディタなどで保存するとOSによっては不可視ファイルの扱いになってしまうので、適当な名前で保存してサーバにアップロードした後にFTPクライアントの機能でリネームするという方法が便利です。そして作成した.htaccessという名前のファイルにこのような記述をして、文の最後に改行を忘れずに入れて保存してください。

suPHP_ConfigPath /home/user/public_html/settings/

この例での/home/user/public_html/settings/の部分は、用意したphp.iniを置いているディレクトリのパスという設定です。各々のケースに合ったパスへと置換して下さい。このように設定しておくと、.htaccessを置いたパスと、それより下位のディレクトリで実行されたプログラムに/home/user/public_html/settings/に置いたphp.iniの設定が適用されるようになります。

なお.htaccessファイルもphp.iniファイルもただのテキストファイルですので、ブラウザからアクセスすると現在の設定内容が丸見えになってしまいます。それを避ける為にはApacheの特定の拡張子をもったファイルへのアクセスを禁止する機能を使うのですが、やはりそれも.htaccessファイルで設定することになります。次回はそれを含めた.htaccessの代表的な機能と書式を紹介することにします。


php.iniでPHPの各種設定を変更

PHPのデフォルト文字コードなどの各種設定は、php.iniというファイルで定義されています。レンタルサーバを契約してPHPを使用したサイトを作成する際には、まずプロバイダによる現在のphp.iniの設定をチェックしてみましょう。PHPの関数phpinfo()を使うと実行ディレクトリに適用されている設定を一覧にして表示してくれますので、ドキュメントルートに以下のように記述したファイルを保存しブラウザでアクセスします。

<?php
phpinfo();
?>

phpinfo()というタイトルのページが表示されれば成功です。PHPロゴの隣に現在のヴァージョン、その下の表では現在の設定内容がわかります。

表の項目Configuration_File (php.ini)Pathにはphp.iniファイルが置かれているディレクトリが、Loaded_Configuration_Fileには実際に読み込まれたファイルが示されています。レンタルサーバの場合Configuration_File (php.ini)Pathの項目で設定されたパスにユーザがアクセスを許されず、設定を変更しようとしてもそこにあるファイルに直接手を加えることができないことが多いですので、新たに設定済みのphp.iniファイルをPHPプログラムと同じディレクトリに作成します。
php.iniファイルの書式は以下のようになります。

設定項目 = 値

文の終わりは改行で示し、特別な文字はつけません。また、コメントアウトは;(セミコロン)を行頭につけて行います。例えばデフォルトの文字コードをUTF-8にしたいときは、以下のように記述します。

default_charset = "UTF-8"

その他にどのような設定項目があるのかの解説はここでは省きますが、PHPのパッケージに付属したphp.iniには、コメント行を活用した各設定項目の説明が英語で書かれていますので、既存のphp.iniをコピーして、説明を見ながら必要な設定項目だけ変更して保存するという方法が便利です。先程phpinfo()で調べたヴァージョンのphpを、http://www.php.net/からダウンロードし、展開したファイルの中からphp.ini-○○といったような先頭にphp.iniがついているファイルを見つけてください。後ろについている単語は用途にあわせた設定を表していますが、php.ini-recommendedがあればそれを、無ければphp.ini-productionをphp.iniにリネームして使用します。
これでphp.iniの入ったディレクトリに設定が適用された筈です。そのディレクトリ内のファイルでphpinfo()をやってみて、Loaded_Configuration_Fileが同ディレクトリ内のものに変更されていることを確認してください。

ユーザが配置したphp.iniの有効範囲はそのディレクトリ内のみですが、Apacheの設定ファイル.htaccessを使って有効範囲を広げることも可能です。次回はその方法の解説をします。