PHP5の最近のブログ記事

1.設定ディレクティブに関する簡単な説明。

 mbstring.language ------------- mbstringで使用されるデフォルトの言語を設定。

 mbstring.encoding_translation - HTTPクエリに関して、入力文字エンコーディングの検出/変換を設定。

 mbstring.internal_encoding ---- デフォルトの内部文字エンコーディングを設定。mbstring.language の後に置く必要がある。

 mbstring.http_input ----------- デフォルトのHTTP入力文字エンコーディングを設定。

 mbstring.http_output ---------- デフォルトのHTTP出力文字エンコーディングを設定。

 mbstring.detect_order --------- デフォルトの文字エンコーディング検出順序を設定。

 mbstring.substitute_character - 無効な文字を代替するデフォルト文字を設定。

 mbstring.func_overload -------- シングルバイト対応の関数をmbstring関数の対応する関数で置換(オーバーロード)。

 mbstring.strict_detection ----- 厳密なエンコーディング検出を行う。


2.EUC-JPユーザ用のphp.ini設定例

output_buffering              = Off    ; 出力バッファリングを無効に設定
default_charset               = EUC-JP ; HTTPヘッダの文字コードセットを設定

[mbstring]
mbstring.language             = Japanese
mbstring.encoding_translation = On
mbstring.http_input           = auto
mbstring.http_output          = EUC-JP
mbstring.internal_encoding    = EUC-JP
mbstring.substitute_character = none


3.SJISユーザ用のphp.ini設定例

output_buffering              = On                ; 出力バッファリングを有効に設定
output_handler                = mb_output_handler ; 出力文字エンコーディングの変換バッファを設定
default_charset               = Shift_JIS         ; HTTPヘッダの文字コードセットを設定

[mbstring]
mbstring.language             = Japanese
mbstring.encoding_translation = On
mbstring.http_input           = auto
mbstring.http_output          = SJIS
mbstring.internal_encoding    = EUC-JP
mbstring.substitute_character = none

PHPで拡張モジュールを利用するには、php.ini の設定を使用してPHP起動時にロードするか、スクリプトの中で dl() 関数を使用して動的にロードするかの2種類があります。

ここでは、php.ini を使ってmbstring拡張モジュールをロードします。

PHP拡張モジュールのDLLには、ファイル名の前に 'php_' が付いています。

ダウンロードしたzipファイルには、PHP設定ファイル php.ini のサンプルとして php.ini-dist と php.ini-recommended の2つが含まれています。パフォーマンスとセキュリティの観点から最適化された初期設定がなされているので、php.ini-recommended の使用が推奨されています。(php.ini-recommended をコピーして、php.ini とファイル名を変更して使用)


1.拡張モジュールが存在するフォルダを指定

 (ファイル名を変更した)php.ini の542行目を

 extension_dir = "./"
    ↓
 extension_dir = "c:\php\ext"

 に変更。


2.mbstring拡張モジュールのロードを指定

 php.ini の674行目を

 ;extension=php_mbstring.dll
    ↓
 extension=php_mbstring.dll

 に変更(行頭の';'を削除)。


これで、マルチバイト文字列関数が利用できるようになります。


3.動作確認用スクリプトの作成

 以下の内容を、Apacheサーバーの「htdocs」フォルダに、適当なファイル名(例えば、mbtest.php)で保存します。
 (デフォルトでは、C:\Program Files\Apache Software Foundation\Apache2.2\htdocs)

 尚、PHPスクリプトの文字エンコード、ブラウザの表示エンコードともにUTF-8として下さい。

    <html>
    <head><title>PHP-MBSTRING TEST</title></head>
    <body>

    <?php
    mb_internal_encoding("UTF-8");

    echo mb_internal_encoding();
    echo '<br />文字列の長さは:'.mb_strlen("あいうえお");
    ?>

    </body>
    </html>


4.mbstring拡張モジュールの動作確認

 ブラウザを立ち上げて、アドレス欄に「http://localhost/mbtest.php」と入力、リターンキー押下で、

 UTF-8
  文字列の長さは:5 と表示されたら、動作OKです。


注)PHPをサーバモジュールとして実行している場合は、Webサーバを再起動しないと、php.ini の設定が反映されません。Webサーバを忘れずに再起動して下さい。

PHP5と日本語処理

|

・現状のPHPでは、文字列は「シングルバイト文字」として実装されており、日本語のような「マルチバイト文字」の処理(=文字単位)には適していません。

 日本語処理は、漢字など多くの文字を表現する必要があるため、マルチバイト文字を使用して文字単位で扱えるようにする必要があります。しかも、プラットフォームや使用目的によって、複数の文字エンコーディングが存在します。(通常の利用では2バイトで日本語表現が可能ですが、EUC-JPの場合は2~3バイト、UTF-8の場合は最大6バイトが必要となることがあります)

・Webアプリケーションで日本語を正しく処理するためには、適切な文字エンコーディングを使用しなければなりません。

 1.ブラウザから送信されるデータ(HTTP入力文字エンコーディング)
 2.PHP内部文字エンコーディング
 3.PHPスクリプト文字エンコーディング
 4.DBクライアント文字エンコーディング
 5.ブラウザに送信するデータ(HTTP出力文字エンコーディング)
 6.メール送信するデータ文字エンコーディング
 など。


・PHP本体にはマルチバイト文字を正しく処理する機能はありませんが、mbstring拡張モジュールが、マルチバイト文字列処理を実行するための文字列関数を提供します。

・PHP5では日本語の場合、内部文字エンコーディングは、EUC-JP、UTF-8等が利用できます。PHPスクリプト文字エンコーディングは、Shift-JISを避け、EUC-JPかUTF-8を使用するのが安全です。


・PHP6では内部文字エンコーディングがUTF-16になると発表されていますので、今後、スクリプトを記述する際には、Unicode(UTF-16、UTF-8)を使うのが良いかもしれません。

PHP5をWindows上のApache2.2.xのモジュール版として動作させるには、httpd.conf を編集してApacheがPHPを利用できるようにした後、Apacheサーバを再起動する必要があります。


1.Apache設定ファイル「httpd.conf」の編集

 Apache2.2.xのモジュール版を使用する場合は、以下の行を httpd.conf の最後へ追加して下さい。

    LoadModule php5_module "c:/php/php5apache2_2.dll"
    AddType application/x-httpd-php .php


2.動作確認用スクリプトの作成

 以下の内容を、Apacheサーバーの「htdocs」フォルダに、適当なファイル名(例えば、test.php)で保存します。
 (デフォルトでは、C:\Program Files\Apache Software Foundation\Apache2.2\htdocs)

    <html>
    <head><title>PHP TEST</title></head>
    <body>

    <?php phpinfo() ?>

    </body>
    </html>


3.サーバーモジュール版PHPの動作確認

 ブラウザを立ち上げて、アドレス欄に「http://localhost/test.php」と入力、リターンキー押下で、

 PHP情報が表示されたら、動作OKです。

PHP5をWindows上のApache2.2.xでCGI版として動作させるには、httpd.conf を編集してApacheがPHPを利用できるようにした後、Apacheサーバを再起動する必要があります。


1.Apache設定ファイル「httpd.conf」の編集

 CGI版のバイナリを使用する場合は、以下の行を httpd.conf の最後へ追加して下さい。

    ScriptAlias /php/ "c:/php/"
    AddType application/x-httpd-php .php
    Action application/x-httpd-php "/php/php-cgi.exe"


2.動作確認用スクリプトの作成

 以下の内容を、Apacheサーバーの「cgi-bin」フォルダに、適当なファイル名(例えば、cgitest.php)で保存します。
 (デフォルトでは、C:\Program Files\Apache Software Foundation\Apache2.2\cgi-bin)

    #!c:/php/php
    <?php
      echo "Content-type: text/html\n\n";

      echo '<html>
      <head><title>PHP-CGI TEST</title></head>
      <body>';

      echo "Hello World\n\n";

      echo '</body>
      </html>';

     ?>


3.CGI版PHPの動作確認

 ブラウザを立ち上げて、アドレス欄に「http://localhost/cgi-bin/cgitest.php」と入力、リターンキー押下で、

 Hello World と表示されたら、動作OKです。

PHPをWindowsシステムにインストールするのには、手動(手作業)とインストーラによるインストールの2種類があり、PHP5.2以降では、インストーラーはMSI形式となりました。

ここでは、Windows2000に手動でPHPをインストールします。


1.PHPファイルのダウンロード

 最初に、phpのWebページで、PHP5の最新版を確認します。

 2009年3月26日現在、最新の安定版は、PHP5.2.9です。

 「Current PHP 5 Stable: 5.2.9」をクリックします。


 ダウンロードページが表示されますので、

 「PHP 5.2.9-1 zip package」をクリックします。


 ミラーサイトページが表示されますので、

 「jp.php.net」か「jp2.php.net」をクリックして、zipバイナリアーカイブをダウンロードします。


 「ファイルのダウンロード」ダイアログボックスが表示されますので、

 「保存」ボタンをクリックして、適当なフォルダ(例えば、C:¥)にアーカイブを保存します。


2.PHPファイルの展開

 ダウンロードファイルを展開すると、zipパッケージは次のように、「php-5.2.9-1-Win32」のようなフォルダ名で展開されます。

 「C:\」に保存後、ファイルを展開して、「C:\PHP」のようにフォルダ名を変更すると良いでしょう。


3.ファイル構成

 展開されたファイル構成は、次のようになります。

 CGI実行ファイル、CLI実行ファイル、サーバモジュールなどがあります。


4.環境変数の設定

 4-1.CGI実行ファイル、CLI実行ファイル、サーバモジュールのいずれも「php5ts.dll」を必要としますので、PHPフォルダ(C:\PHP)をPATH環境変数に登録して、php5ts.dll を有効にします。

 「マイ コンピュータ」を右クリックして、「プロパティ」をクリックすると「システムのプロパティ」ダイアログボックスが表示されますので、「詳細」タブを選択して、「環境変数」ボタンをクリックします。


 「環境変数」ダイアログボックスが表示されますので、

 システム環境変数の「Path」を選択して、「編集」ボタンをクリックします。


 「システム変数の編集」ダイアログボックスが表示されますので、

 変数値の最後に、「;C:\PHP」を追加して、「OK」ボタンをクリックします。


 4-2.PHPが設定ファイル「php.ini」にアクセスできるように、php.ini が存在するフォルダ(C:\PHP)を変数名「PHPRC」に登録します。

 「環境変数」のダイアログボックスで、システム環境変数の「新規」ボタンをクリックすると、


 「新しいシステム変数」ダイアログボックスが表示されますので、

 変数名に「PHPRC」、変数値に「C:\PHP」を追加して、「OK」ボタンをクリックします。


5.PHPの動作確認

 コマンドプロンプトを開いて、「php -r "echo 'Hello World';"」と入力、リターンキー押下で、

 Hello World と表示されたら、インストール完了です。