プロが教えるわが家の防犯対策術!

いつもお世話になっております。

PHP5+Apache(2.0)+PostgreSQLで開発しております。
OSはWinXP(Pro)SP2です。
PostgreSQLのみ別端末に入れております。

手始めにPDOでPostgreSQLに接続しようとしたところ、「PDOクラスがみつかりません」というようなエラーがでました。
$db = new PDO("mydsn"); ←ここで発生

phpinfo()関数で調べたところ、PDOのライブラリがロードされていないようです。

php.iniには
extension_dir = "C:\php\php-5.2.0-Win32\ext"
extension=pdo_pgsql.dll
extension=php_pdo_pgsql.dll
を記述しており、extension_dirには上記DLLが存在することも確認しております。またデータソースの設定として
[PDO]
pdo.dsn.mydsn="pgsql:host=xxx.xxx.xxx.xxx port=5432 dbname=mydb user=postgres password=sa"
を最終行に追加しました。
Apacheの再起動も実行しました。

何か原因となるような箇所がございましたらご教授願います。宜しくお願いします。

A 回答 (1件)

Windows XP + Apache v2.05 + PHP v5.16で、SQLite が PDO で使っています。



phpinfo() で PDO欄と pdo_sqlite欄が表示されています?

> php.iniには
> extension_dir = "C:\php\php-5.2.0-Win32\ext"
> extension=pdo_pgsql.dll
> extension=php_pdo_pgsql.dll
PostgreSQL は設定していないので不明ですが、SQLite, MySQL も同じ設定ですから間違っていないと思いますが、
 extension=php_pdo.dll は記述しています?

これは PHP のソースですか?
pdo.dsn.mydsn="pgsql:host=xxx.xxx.xxx.xxx port=5432 dbname=mydb user=postgres password=sa"

SQLite は下記のように記述しています。
$DSN = new PDO( "sqlite:C:\Prog...\Hoge.SQLite" );
    • good
    • 0
この回答へのお礼

qaz_qwerty_me様、早速のご回答ありがとうございます。

思いっきり抜けておりました、
extension=php_pdo.dll の記述が。
同僚の言葉を鵜呑みにしておりました。

ちなみに
>これは PHP のソースですか?
>pdo.dsn.mydsn="pgsql:host=xxx.xxx.xxx.xxx port=5432 dbname=mydb user=postgres password=sa"

とりありますが、これはデータソースの設定をphp.iniで定義しております。PHPソースでは定義したデータソース名を使うというやり方で。

再起動してみてPDOがロードされていることが確認できました。
ありがとうございました。

お礼日時:2006/11/10 11:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!