- 締切済み
PHPでPostgresqlへアクセス
OSはFedoraCore3を使用しています。 PHP5で作成したプログラムでPostgresqlへアクセスするのですが,全く応答がありません。 ブラウザで表示後、ソースを見ると <html><body></body></html> としか出ません。 ということはpg_connect("host=****...")がエラーの原因と考えています。 上記のプログラムの上にecho"ああ"と入力すると、ソースには「ああ」と表示があります。 PHPでFTP接続のプログラムを作成して実行するとこれは問題なく動きます。 やはり,Postgresqlの設定がおかしいのでしょうか?それともアクセスの方法が間違っているのでしょうか? ホント困っています。よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- shinob
- ベストアンサー率42% (3/7)
pg_connect()が定義されていないというのなら、必要なコンポーネントが入ってないので、 yum install php-pgsql を実行してみてください。
- kalze
- ベストアンサー率47% (522/1092)
>Call to undefined function pg_connect() 定義されていないpg_connectという関数が呼ばれてます(使われてます)って意味ですね。 PHPでのpostgresql操作用モジュールが入っていない可能性が高いです。 ちょっとパッケージ名がそのものズバリはFedoraのは分かりませんが、pgsql.soがインストールされていないか、pgsql.soを読み込む設定になっていないのでしょう。 pgsql.soがまずあるかどうか確認してください。 なければ、インストールしてください。 あった場合、またはインストールした場合、php.iniに extension = pgsql.so を追記してください。 その後、apacheを再起動するなりして、php.iniの変更を適用させてください
補足
詳しくありがとうございます。 ;extension=php_pgsql.dll はあったので、「;」を外し有効にしました。 検索コマンドでpgsql.soを調べましたら出てきませんでした。検索にはfindを使いました。
- shinob
- ベストアンサー率42% (3/7)
直接の回答ではありませんが、エラーの内容が表示されないのであれば、php.iniの「display_error = Off」を「display_error = On」に変更されてみてはいかがでしょうか。 外部に公開しているのであれば、いくらか問題があるかもしれませんが、ローカルでテストするのにはエラーを表示してくれる状態で開発を行ったほうが楽だと思います。
補足
[display_error = On]にしました。 下記のエラーが出ました。 Call to undefined function pg_connect() これって、php.iniのPostgresの設定が有効になっていないから出ると解釈していいのでしょうか?
- kalze
- ベストアンサー率47% (522/1092)
Fedoraは使っていないので、微妙に違うところがあるかもしれません。 postgresqlのログは、/var/log/内にpostgres.logなどpostgresとファイルネームに含まれるログファイルがあるか、/var/log/内にpostgresという名前のディレクトリがあり、その中に格納されているかのはずです。 (たぶん前者) PHPのエラー詳細は、/var/log/内にhttpdまたはapacheが含まれるログファイルがあるか、httpdまたはapacheというディレクトリがありその中にログファイルが生成されているはずです。 また、Fedoraは3からデフォルトでseLinuxが有効になっているはずですが、有効のままでしょうか? 別に初心者なのはかまいませんが、マニュアルを見ればログファイルなんかはすぐに分かるはずです。 またgoogleなどの検索エンジンを使うって方法もあるかと。
補足
logのある場所、勉強になりました。ありがとうございます。 seLinuxを無効にしました。ディフォルトでは有効になっていました。seLinuxについてはもう少し勉強が必要です。セキュリティが良くなっているみたいのなのですが、理解に苦しみます。
- kalze
- ベストアンサー率47% (522/1092)
サーバのログにはなんと出力されていますか?
補足
サーバのログの見方がわかりません。 Linux自体が初心者で、初めてサーバを立ち上げているものです。 手がかかり本当にすみません。
補足
yum install php-pgsqlを実行しましたが、エラーが出ました。 下記の通りです. You have enabled checking of packages via GPG keys. This is a good thing. However, you do not have any GPG public keys installed. You need to download the keys for packages you wish to install and install them. You can do that by running the command: rpm --import public.gpg.key For more information contact your distribution or package provider.