PostgreSQL データベースを使用する大規模な PHP アプリケーションを Rails に移行する必要があります。これは OS X Lion Macbook Pro で、Apache + PHP の既存のインストールを使用しています。
Homebrew 経由で PostgreSQL をインストールしました。ホストが「localhost」、ユーザー名が「my_username」、デフォルトのデータベースが「my_db」であるとします。パスワードは空白です。結果は次のとおりです。
コマンドラインからデータベースに問題なくアクセスできます
psql -h localhost -U my_username -p 5432 my_db
問題ない。これも機能します:
psql -U my_username my_db
また、問題ありません。また、Rails を使用して、次の設定で非常に簡単にデータベースにアクセスできます。
adapter: postgresql
encoding: sql_ascii
template: template0
database: my_db
pool: 5
username: my_username
password:
それはすべてうまくいきます。しかし、PHPでは、私がそうするとき
pg_connect("host=localhost port=5432 dbname=my_db user=my_username") or die(pg_last_error());
次のメッセージが表示されます。
LANG_FATAL_ERROR: LANG_DB_COULD_NOT_CONNECT
Access denied for user 'my_username'@'localhost' (using password: YES)
行から "host=" を削除すると、次のようになります。
pg_connect("port=5432 dbname=my_db user=my_username") or die(pg_last_error());
また
pg_connect("dbname=my_db user=my_username") or die(pg_last_error());
私はまったく何も得ません。pg_connect は false を返し、接続がないことを示しますが、エラーはありません! pg_last_error() は何も返しません。
また、接続文字列に password='' を追加しようとしましたが、結果はありませんでした。
Stack Overflow や Google などでこの問題への言及を見つけるのに非常に苦労しましたが、うまくいきませんでした。Stack Overflow には同様のタイトルの質問がいくつかありますが、この特定の問題はありません。ネットで見つけたのは、pgsql.so を自分でコンパイルし、拡張子が php.ini にリストされていることを確認することだけでした。私はゼロの結果でそれをしました。
明らかに、これは PostgreSQL 自体の問題ではなく、PHP に関係しています。
助けてください。ありがとう。