zenith: 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 クレジット他が表示されていれば正常です。

続く...

バブ

| | コメント(4)

寒いときはやっぱりお風呂で温もりたい。そのお風呂を素敵に演出するアイテム、入れて楽しい入って嬉しい花王のバブを購入した。

バブがまだ泡を出している状態の時に入るのが良い。肌を伝わるシュワシュワを楽しむために。だが体を洗うのに手間取り、水面上に浮き上がって今にも散り散りになりそうになっていた。慌てて飛び込んでしまった為に、バブは湯船から溢れ出るお湯にのって排水溝へと流れさってしまった。なぜバブは流れさってしまったのか?

水面に浮いていたからと仮定してみよう。しかし最初は沈んでいた。なぜ途中で浮き上がったのだろう。バブから生まれる気泡が関係しているのではないだろうか。閉じ込められていた炭酸ガスがバブから分離する時、炭酸ガスに掛かる浮力はバブにも働く。バブ本体が溶け始めの大きな時では「バブに掛かる重力<気泡の浮力」となり、結合力の弱いバブと気泡が分離してしまう。そのままバブが小さくなるにつれて重力と浮力の差も小さくなって行く。それがバブと気泡の結合力を下回った時、バブは気泡につかまって浮かび上がるのではないだろうか?

最後まで浮かび上がらないバブの糸口が見えそうだ。どんなにバブが小さくなろうとも、遠慮なく飛び込める日が来るかもしれない。

近況

| | コメント(1)

Blacksmith の名声を上げ上げ現在60P。上位は1000オーバーという、匠への道は長い。チェイミンに大量のオリを融資してもらったり、どりるメンツや珍しく来たセツにまで材料を施して頂いた。ほんま本土の人は人情厚過ぎやで。ありがとうございます。ポキポキランクインさせます。

yakan.jpg
「カップヌードルCM版シュワルツネッガーごっこするにゃ」とアリシュに渡された物。

dedendenn.jpg
このデデンデンデデンといい、アインブログはシュワルツネッガーひいきに感じる。

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 してデフォルトの設定ファイルパスを変更する方法もあるみたい。

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

日本昔話

| | コメント(2)

gohan10C.jpg

そびえ立つ山の局地水平線に対して垂直に歩く村人は弾道学に欠かせないブレンシュルス点の暗喩であるとか、川を流れてくる桃はおばあさんのおじいさんに対する失われ続ける家族的接点の暗喩であるとか、とても勉強になるアニメ。なにより子供に安心して見せられる貴重な番組。その影響力は、放送終了によって子供のご飯離れが一気に進んでしまったとか、ないとか。

今見ても面白い。懐かしい楽しさももちろんだが。見直して初めて理解できた声役の二人の絶妙な声当て。プロとはこういう人を指すべきなのだろう。安易にソフトウェアのお尻にくっつけて喜んでてはいけない。二人だけとは思えない!しばらくの間は市原悦子のすごさを痛感して過ごす事になった。

DA-540.jpg

マクドナルドのサラダはあなどれない。

野菜とコーンフレーク?をコップ状の容器に入れた物が出てきた。ガーデンサラダというらしい。おいしく食べていたのだが、途中でドレッシングが染みてない層にたどり着いてしまった。コップという構造のせいでドレッシングが下層に到達する前に吸収されつくしている。鳥取砂丘緑化シンポジウムで聞かされた時のようなそんな感じだ。ただの野菜をむしゃむしゃと食べるのはなんとも心もとない。カタカナにするとおしゃれなガーデンサラダも、青臭い香りにつつまれている現状では庭の雑草を食べる害虫、そんな気分にさせるマイナス要素になってしまった。ネーミング企画部もまさかの失態である。

食べ終えて気が付く。最初にドレッシングを全部ぶっかけずに、食べてはかけ食べてはかけすればいいんじゃないか?分割してかける。簡単だしこれなら最後までドレッシングの味を楽しめる。分割作業によるコスト増を差し引いても大いに余りある効果だ。これに気付いた時はハノイの塔を解いた時のよりも興奮を憶えた。マクドナルドさんにはぜひ、この小技をひとつコップに書き添えて頂きたい。