[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:31873] PHP4-PEAR の DB_pgsql



小松@メディアフロントです。

FAQならごめんなさい。PEAR-MLもチェックしてないので。

PHP4-PEARを使ってるのですが(4.1.1)、PostgreSQLで
DB::connectしようとすると、接続エラーが出ます。
皆さんどうしてらっしゃいますか?

調べたところ、DB.phpのDSN文字列処理の部分がPostgreSQLが
想定する仕様とあってなくて、ユーザ名とパスワードを指定
しなければエラーになる様でした。
(passwordというユーザはいないと言われる)

そこでDB.phpに少し手を入れてこれを回避したら解決したので、
もし同様の問題で悩んでらっしゃる方がおられたらお知らせします。

具体的には、DB.php(sidでは/usr/share/pear/にある)のparseDSN()中の
474行あたり、以下の部分の下に4行ほど加えます。

        // Get (if found): username and password
        // $dsn => username:password@protocol+hostspec/database
        if (($at = strrpos($dsn,'@')) !== false) {
            $str = substr($dsn, 0, $at);
            $dsn = substr($dsn, $at + 1);
            if (($pos = strpos($str, ':')) !== false) {
                $parsed['username'] = urldecode(substr($str, 0, $pos));
                $parsed['password'] = urldecode(substr($str, $pos + 1));
            } else {
                $parsed['username'] = urldecode($str);
            }
        }
//以下の4行を追加
        else{
                unset($parsed['username']);
                unset($parsed['password']);
        }
//追加終わり

こういうのってどこへBTSすればいいのでしょうね。