PHPでPostgreSQLに接続しようとしたら例のエラー

PHPPostgreSQLに接続するところで躓いてしまった。

通常だったらphp.ini内の「extension=php_pgsql.dll」を有効にするだけでpg_connect関数が使えるようになり、ハイ接続プログラム書いてアプリ作成〜。。。。という流れになるハズなんだが、環境設定したOS上でどうがんばってもpg_connect関数が使えない。。
これは久々にハマった。。

問題

通常の手順どおりにPHPからPostgreSQLにアクセスする設定を施しても接続できない。
(今回使用したPHPのバージョンは5.2系の最新版である5.2.10です)

考察

調査してみた

どうやらpg_connect関数を使っている箇所で落ちている模様。

Apacheのエラーログを見てみると、起動時に以下のエラーが発生していた。

Apacheのerror.log

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\PHP\\ext\\php_pgsql.dll' - 指定されたプロシージャが見つかりません。 in Unknown on line 0

設定は正常

PHPにてPostgreSQLを使うにはphp.iniにてextension記述箇所をコメントアウトすればOKなので、設定ファイルは問題無し。

extension=php_pgsql.dll

既知のバグみたい?

どうやらPHPPostgreSQLのモジュールには既知のバグがあるらしくて、5.2.6以降のモジュールは使えないとのこと。
現象としては、設定を正しく記述し、モジュールがあるにも関わらず「モジュールが無いよ」ということが発生するのです。

解決策

解決策としては、5.2.5以前のモジュール(php_pgsql.dll)を使用すると、接続できるようになりました。

しかし、PHPダウンロードサイトから5.2.4や5.2.5がおとせないんで、困った。(404になってしまう)
ちなみにPHPのオールドバージョンのダウンロードページはこちら

しょうがなく、職場のサーバから引っ張ってきたオールドバージョンの「php_pgsql.dll」を入れ替えてやったら難なく接続できました。