PHP: 2005年11月アーカイブ

PDO 関数

| | コメント(4)

PHP 5.1 になり、PDO 関数が標準でサポートされた。PDO とは PHP Data Object の頭文字で、データベースの為のクラス郡。かっこよく言えばデータベース抽象化レイヤーであり、さかしげに言えばインピーダンス ミスマッチを解消するO/Rマッパーではない。シティーボーイなら、データベース アブストラクト レイヤなんて言っちゃうかもしれない。この辺りの考え方に対するネーミングに惑わされてはいけない。結局はプログラムとデータベースの接続を楽チンにしたいだけなのだから。同じような物に PEAR:DB 等があるが、PDO はシンプル・軽量が売りだそうな。身内向けのドキュメントを書く事があったのでその準備編。

準備

PDO 関数を利用する為には PHP 5 と PDO エクステンション、それと使用するデータベース用の PDO ドライバの3つが必要です。
導入例として、Win32 環境で稼動している Apache™ 2.0 に PHP をモジュールとしてインストールする方法、及び PDO を用いて MySQL™ にアクセスする際の手順を示します。

  1. PHP のウェブサイトから PHP 5 のパッケージをダウンロードします。
    ダウンロードしたパッケージを、適当なフォルダへ解凍します。
    今回は PHP 5.1.1 zip package を用意し、 "C:\PHP" へ作成しました。
  2. PHP の設定を行います。
    php-recommanded.ini を複製し、それを php.ini にリネームします。

    作成した php.ini を開き、設定を確認します。

    変更前 変更後 備考
    display_erros = Off display_erros = On 実行時エラーを出力するかどうかを表します
    display_startup_errors = Off display_startup_errors = On PHP の起動シーケンスで発生するエラーを表示するかどうかを表します
    extension_dir = "./" extension_dir = "C:\PHP\ext" エクステンションが置いてあるディレクトリを表します
    ;extension=php_mbstring.dll extension=php_mbstring.dll mbstring エクステンションを有効にします
    ;mbstring.language = Japanese mbstring.language = Japanese mbstring エクステンションの言語を表します
    ;mbstring.detect_order = auto mbstring.detect_order = auto mbstring エクステンションのエンコーディング検出方法を表します
    ;mbstring.internal_encoding = EUC-JP mbstring.internal_encoding = EUC-JP mbstring エクステンションの内部エンコーディングを表します

    php.ini に以下の行を追加します。

    備考
    extension = php_pdo.dll PDO エクステンションを有効にします
    extension = php_pdo_mysql.dll MySQL 用の PDO ドライバを有効にします

    補足

    • デバッグ時の問題を判り易くする為の設定です。運用時には Off にする事が強く推奨されています。
    • php.ini の雛形。php-recommanded.ini は推奨される設定であり、php-dest.ini は過去の PHP との互換性に重点を置いた物です。
    • これらのファイルが extension_dir で示したディレクトリにない場合、 PECL から別途入手する必要があります。
  3. PHP パッケージ内の php5ts.dll を、OS のシステム フォルダにコピーします。

    OS システム フォルダ
    (OS が C ドライブにインストールされている場合)

    Microsoft® Windows® XP

    C:\WINDOWS\system32
    Microsoft® Windows® 2000
    Microsoft® Windows® NT 4.0
    C:\WinNT\system32
    Microsoft® Windows® Me
    Microsoft® Windows® 98SE
    Microsoft® Windows® 98
    Microsoft® Windows® 95
    C:\WINDOWS\system
  4. Apache 2 の設定を行います。
    http.conf を開き、以下の文字列を追加します。

    LoadModule php5_module "C:\PHP\php5apache2.dll"
    <IfModule mod_php5.c>
    AddType application/x-httpd-php .php
    PHPIniDir "C:\PHP"
    </IfModule>
  5. 設定が完了したら Apache を再起動します。
    同時に設定が正しく反映されているか確認をします。
    phpinfo.php ファイルをドキュメントルート可に作成し、以下の内容を記入します。
    <?php echo phpinfo(); ?>

    ブラウザからアクセスして PHP クレジット他が表示されていれば正常です。

続く...

http://jp.php.net/manual/ja/configuration.changes.php 参照。

<IfModule mod_php5.c>
php_value include_path ".:/usr/local/lib/php"
php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php4.c>
php_value include_path ".:/usr/local/lib/php"
php_admin_flag safe_mode on
</IfModule>
<IfModule mod_php3.c>
php3_include_path ".:/usr/local/lib/php"
php3_safe_mode on
</IfModule>

ただし Win32 と FreeBSD では以下の通り。

>>> for apache 2 under freebsd (not sure about other systems) it should be
>>> <IfModule sapi_apache2.c>
>>> ...
>>> </IfModule>

Same for Windows

PHP5 は mod_php5.c のままで良いのかしら?
Apache2.0.55 と PHP5.0.5 で確認したところ mod_php5.c できちんとディレクティブは有効になっていた。
IfModule ディレクティブで使用するモジュール名とは、モジュールのソースファイルと同じ。
参照 http://httpd.apache.org/docs/2.0/ja/mod/module-dict.html
この辺後で調べよう。

何の為に使うのか。IfModule ディレクティブ内に PHPIniDir を記入し、PHP4 と PHP5 で読みに行く設定ファイルを別々に持ちたい。自分で make してデフォルトの設定ファイルパスを変更する方法もあるみたい。

このモジュール名の例外が判らず、楽をしようとしたのに余計手間が掛かってしまった。説明書をちゃんと読んでいない証拠だ。反省。

このアーカイブについて

このページには、2005年11月以降に書かれたブログ記事のうちPHPカテゴリに属しているものが含まれています。

前のアーカイブはPHP: 2005年7月です。

次のアーカイブはPHP: 2006年1月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.12