• ベストアンサー
  • すぐに回答を!

PostgreSQLに接続できません(Windows XP)

PHPを数日前から始めました。 表題の通り、Apache+PHP+PostgreSQLという組み合わせでWindowsXP上で、ユーザ認証ページを作っています。 バージョンは、 Apache:1.3.29 PHP:4.3.11 PostgreSQL:8.0.2 です。 ApacheとPHPはちゃんと動作していまして、データベース関連以外の関数は動きます。 ところが、PostgreSQLで無事に必要なテーブルを作って、PHPで呼び出そうとしたら、こんなエラーメッセージが帰ってきちゃったのです。 "Fatal error: Call to undefined function: pg_connect() " 同様な現象に関する質問メールをPHPユーザMLで見つけたのですが↓ http://ns1.php.gr.jp/pipermail/php-users/2004-February/020886.html "PHPインストール時のconfigure"の意味が分かりません。私は、PHPをWindows Installerで落としたので、 configure云々は実行しませんでした。もしかして、 やり方が違うのでしょうか? あまりに初歩的な質問で申し訳ないのですが、どなたか対策をお教えいただけませんでしょうか?

共感・応援の気持ちを伝えよう!

  • PHP
  • 回答数6
  • 閲覧数614
  • ありがとう数11

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.2
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)

php.ini ファイルの中の extension_dir = "./ext" のフォルダの設定を確認し、違っていたら自分の環境に合わせる そのフォルダに、php_pgsql.dllがあることを確認 ;extension=php_pgsql.dll のようになっていたら extension=php_pgsql.dll のようにコメント(;)をはずす とかしてみたらどうでしょう

共感・感謝の気持ちを伝えよう!

質問者からのお礼

いつもご回答いただいて本当にありがとうございます。 早速やってみました。 extension_dirの設定先のフォルダが大文字だったので修正し、extension=php_pgsql.dllのコメントアウトを外しましたが、まだ同じエラーが出ます。 ひょっとすると、初期のphp.ini編集段階や、他のdllのコピーの段階で手落ちがあったのかもしれませんので、もう一度1から調べなおしてみます。

その他の回答 (5)

  • 回答No.6

>extension_dirの設定先のフォルダが大文字だったので修正し、extension=php_pgsql.dllのコメントアウトを外しましたが、まだ同じエラーが出ます。 普通PHP4だと c:\phpというフォルダーを作ってその中に解凍した中身を移すので extension_dir = "c:/php/extensions" というフォルダーになると思うのですが、別のフォルダー名にされたのでしょうか。 もしかして大文字にするときに全角になってしまっているとか。 私もPHP5とApache2で入れたときに参考にしたページがPHP5とApacheを使用しているサイトで、フォルダ名が違っているのになかなか気がつかなくてついこの間、苦戦したばっかりです。 No.5さんのいわれているとおり、一度Apacheを再起動しないといけないと思うのですがそれはされていますか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ええ、"PHP"というフォルダ名にしていました。 今回のエラーの原因は、 1.extensionのディレクトリ指定のミス 2.コメントアウトの外し忘れ でした。 そして、ApacheとPostgreSQLの再起動を行って、 無事に実行できました。 何回もアドバイスをいただいてありがとうございましたっ!!

  • 回答No.5
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)

>まだ同じエラーが出ます。 エクステンションがちゃんと有効になっていたら、 phpinfo()で PostgreSQLに関する表示がでるはずですから 確認されてみてはどうでしょうか。 もしかしたら、再起動しないとだめだとか・

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます!! phpinfo()を見たら無事変更できてました。 Apache,PostgreSQLを再起動したら、接続・クエリーが 実行でき、問題を解決できました。的確なご助言、本当にありがとうございました! これからも頑張ってPHPにチャレンジしてみようと思います♪

  • 回答No.4

No.1です。 No2、No3さんのおっしゃるように PHP4でもPostgreSQLだとコメントをはずさなければならないのかもしれませんね。 勉強になりました。

参考URL:
http://allabout.co.jp/career/database/closeup/CU20031114/index.htm?FM=cukj&GS=database

共感・感謝の気持ちを伝えよう!

質問者からのお礼

参考になる記事をありがとうございます。 こちらの記事をもとに手順をもう一度確認してみます。

  • 回答No.3
  • hiro823
  • ベストアンサー率25% (74/285)

こんばんわ。 Windowsではやったことがないので、ちょとぐーぐってみました。 ↓[PHP-users 19053]pg_connectがundefined function↓ http://ns1.php.gr.jp/pipermail/php-users/2003-November/019580.html 上記、PHP-usersで質問されてる方はWindows2000みたいです。 参考にどぞ。

参考URL:
http://ns1.php.gr.jp/pipermail/php-users/2003-November/019580.html

共感・感謝の気持ちを伝えよう!

質問者からのお礼

普段お使いではないのに、わざわざWindows環境のことを調べてくださって、ありがとうございます。 やはりextension関連なのですかね・・・。 ううむ、MLで指摘されている箇所を変更してみましたが、まだ同じエラーメッセージが出ますので、もう一度洗いなおしてみますね。 本当にありがとうございました。

  • 回答No.1

私は普通MySQLを使っているのでちょっとPostgreSQLには疎いのですが、 PHPマニュアル http://jp.php.net/manual/ja/function.pg-connect.php を見てみると pg_connect()は、 connection_stringで指定したPostgreSQLデー タベースへの接続をオープンします。この関数は、成功時に接続リソー スを返します。接続できなかった場合には、FALSEが返されます。 とでています。 なのでまず、PostgreSQLがコマンドプロンプト単独で動いているみたいですので(DOS窓で操作)、パスワード、ユーザーネーム、サーバのIP(たとえばlocalhostとか192.168.0.×とか)が正しいか確認してみてはいかがでしょうか。 また下記URL参考になるかも知れません。 お役に立てば。

参考URL:
http://allabout.co.jp/career/database/closeup/CU20031122/index.htm

共感・感謝の気持ちを伝えよう!

質問者からのお礼

早速のご回答ありがとうございます。 改めて確認してみたのですが、パスワード・ユーザネーム・サーバの設定は間違いありませんでした。 と、すると、何らかの理由でPostgreSQLの関数にアクセスできないようになっているのでしょうか? うーむ・・・。

関連するQ&A

  • WinowsXPでPHPからPostgreSQLにアクセスできません。

    Windows上でPHPを利用してPostgreSQLにアクセスを試みているのですが Fatal error: Call to undefined function pg_connect() in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\dbtest.php on line 13 というエラーが出てアクセスできません。 調べていくうちにnfo.phpのConfigure Commandに"--with-pgsq"がないのが原因とはわかったのですが、下記開発環境での[php.ini],[httpd.conf]の設定をいろいろ試しましたが(勿論再起動も)info.phpのConfigure Commandに"--with-pgsq"が表示されないのです。 どなたか、アドバイスしていただけることがありましたらよろしくお願いします。 開発環境 OS:WindowsXP SP2 PHP:5.26 Apache:2.2 PostgreSQL:8.2

    • 締切済み
    • PHP
  • Postgresqlが接続できない

    環境はxp、apache2、php5、Postgresql8.2です。 ただ今PHPとPostgresqlの勉強をしています。 PHP5で作成したプログラムでPostgresqlへアクセスするのですが,全く応答がありません。 ブラウザで表示後、ソースを見ると Parse error: syntax error, unexpected T_VARIABLE in C:\Program Files\Apache Group\Apache2\htdocs\sample\aa.php on line 10 というエラーが表示されます。 aa.phpの10行目は $d_base = pg_connect("user=postgres password=0000 dbname=test"); と、データベースに接続しています。 どこがおかしいのか ご教示して頂けたら幸いです。

  • PHPでPostgreSQLに接続できない。

    PHPでPostgreSQLに接続しようとすると、 エラーメッセージが出て接続できません。 コマンドプロンプトからの接続は可能です。 環境:PHP5、Apache2.2、PostgreSQL8.24 全て同じサーバにインストールしています。 ********************************************* コマンドプロンプト ********************************************* >psql -U postgres -h localhost test >Password for user postgres::testpass >Type: \copyright for distribution terms >\h for help with SQL commands >\? for help with psql commands >\g or terminate with semicolon to execute query >\q to quit > > >test=# ********************************************* ↑問題なく接続できます。 ********************************************* ********************************************* PHP ********************************************* <?php $con = pg_connect("host=localhost dbname=test user=postgres password=testpass"); ?> ********************************************* エラーメッセージ 12行目は「pg_connect」のところになります。 Fatal error: Call to undefined function pg_connect() in C:\Program Files\Apache…test.php on line 12 ********************************************* php.ini ファイルはextension=php_pgsql.dll をアンコメントしてあります。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ローカルWinXP環境でのPHP+PostgreSQL

    初歩的な質問で申し訳ありません。 PHP+PostgreSQLの勉強をしようと思い、WinXPのローカルマシン上にApache(1.3.27)+PostgreSQL(7.2.1)+PHP(4.3.0)をインストールしました。PostgreSQLを使わないでPHPだけだとブラウザで正しく表示されるのですが、PostgreSQLを使おうとするとエラーになります。 コーディングは $con = pg_connect("localhost port=**** dbname=**** user=*** password=***");です。 エラーは Call to undefined function: pg_connect() in~ でpg_connect未定義だと思います。 PHPのDLLのコピーはphp4ts.dll及びdllフォルダ中の全DLLをシステムファイルにコピーしています。 iniファイルはdoc_root、extension_dir、include_pathを設定しています。 何か拡張モジュールが必要なのでしょうか? それとも他にコピーするDLLがあるのでしょうか?もしくはiniファイルの設定不足なのでしょうか? よろしくお願い致します。

    • 締切済み
    • PHP
  • pg_connect関数

    すみません、質問させてください。 PostgreSQLでPHPの接続をしようと考えています。 Apache, PHP, PostgreSQLのインストールは終了 しています。 PHPのスクリプト内で、 if( !$pg_con=pg_connect("host=$hostname dbname=test user=nobody") ) { と記述して接続を試みているのですが、 Call to undefined function: pg_connect() ・・・ というエラーが出てしまいます。 どのように対処すればいいかアドバイスを下さい。 お願いいたします。

  • PHP4からPostgreSQL7.3に接続したいのですが・・・

    次のページのサンプルを入れてみるところ(IDとPASSは変更していますが。) http://www.hizlab.net/app/view/install/test_php_pgsql.php?prev=install.html%23test 次のようなエラーが発生します。 ターミナルからのtemplate1へのログインではうまく接続できるのですが、この場合、どこがおかしいのでしょうか? --------------------- error ------------------------------ Welcome PHP + PostgreSQL World!! Warning: pg_connect() unable to connect to PostgreSQL server: FATAL: IDENT authentication failed for user "postgres" in /home/user/public_html/test.php on line 24 I can not connect to DataBase(template1) ----------------------------------------------------------- よろしくお願いします。

  • PHPからPostgreSQLにアクセスするには?

    PostgreSQL-Ver8.0.2のWindows版をWindowsXP上に導入し、pgAdmin IIIなどを使いなんとか自前のユーザ名、パスワードを設定して、データベースおよびテーブルを作成しました。そしてコマンドプロンプト上では、Linux環境と似たようなコマンドラインからの入出力ができるようです。 ところが、PHPにDBアクセスのルーティンを埋込み実行するとエラーになります。おそらく、PostgreSQLサーバー起動時のパラメータ設定およびパスの通し方に問題があると考えられるのですが、どなたかご存知の方お知恵を貸してくださいませんか? エラーメッセージは下記の通りです。 Fatal error: Call to undefined function: pg_connect() in C:\Apache2……

  • PostgreSQL8.1とPHP5でwebアプリをつくりたいのに環境設定がわかりません…

     Linuxの初心者です。PostgreSQLとPHP5でwebアプリをつくりたいのですが、環境が構築できずに困っています。現時点での環境を以下に記します。 OS ; Fedora Core 6 server ; apache 2.2.3 DB ; PostgreSQL 8.1.4 言語 ; PHP 5.1.6 Fedora Core 6 をインストールする時に apache と PostgreSQL と PHP はインストールされていました。そして以下の様に設定ファイルを書き直しました(今回の質問に関わりのなさそうなものは省いていますが、なにぶん初心者のため、なにか足りないものがありましたら教えていただきたいと思います)。 ・apache /etc/httpd/conf/httpd.conf    265 ServerName localhost:80 748 AddDefaultCharset EUC-JP ・PHP /etc/php.ini 777 pgsql.allow_persistent = On 781 pgsql.auto_reset_persistent = 0 784 pgsql.max_persistent = -1 787 pgsql.max_links = -1 791 pgsql.ignore_notice = 0 795 pgsql.log_notice = 0 ・PostgreSQL /var/lib/pgsql/data/postgresql.conf       49 listen_addresses = '*' 52 port = 5432 ・PostgreSQL /var/lib/pgsql/data/pg_hba.conf local all all ident sameuser host all all 127.0.0.1/32 ident sameuser host all all ::1/128 ident sameuser host all 0.0.0.0 0.0.0.0 trust  スクリプト内で pg_connect() 関数を使って PostgreSQL に接続しようとすると、  Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: could not connect to server: Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?  Warning: pg_last_error() [function.pg-last-error]: No PostgreSQL link opened yet  というエラーが出てしまうのです。  調べてみたら php-pgsql という拡張モジュールがインストールされていたにも関わらずに、phpinfo() の configure に --with-pgsql が見当たらないのです。パッケージでインストールしたためにオプションが付いていなかったのでしょうか。 こちらのサイトで似たような質問があって読んだのですが、どこのディレクトリで configure をやり直したらいいのか、make clean コマンドで一回オプションを全て消さないとだめなのかがわからなくて困っています。  どなたか詳しい方がいらしたら、教えてください。  よろしくお願いいたします。

  • postgresに接続できない

    環境はxp、apache2、php5、Postgresql8.2です。 ただ今PHPとPostgresqlの勉強をしています。 postgresに接続できなくて困っています。 <?php $d_base = pg_connect("user='postgres' password=xxxx dbname='test'"); //データベースに接続 で、エラーになり その内容は、 Warning: pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: could not connect to server: Connection refused (0000000000D/00000) Is the server running on host "???" and accepting TCP/IP connections on port 5432? in です。 ご教示して頂けたら幸いです。

  • PHPとPostgreSQL接続 (スキーマ)

    いつもお世話になっております。 現在、PHP(5.3.1)とPostgreSQL(9.2)で開発をしております。 エラーが発生しており大変困っております。 こちらが発生するエラーです。 Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: schema スキーマが見つからないとのことです。 そして、以下がコードとなります。 <?php // PostgreSQL Connect if (!($cn = pg_connect("host=*** port=*** user=*** password=*** dbname=***"))) { die; } // PostgreSQL Select $sql = "select * from t_test.na1"; if (!($rs = pg_exec($sql))) { die; } // PostgreSQL Get Records $ct = pg_numrows($rs); for ($i = 0; $i < $ct; $i++) { $item = pg_fetch_array($rs, $i); $txt = "${item[1]}"; } // PostgreSQL Disconnect pg_close($cn); ?> 現在のデータベースのスキーマについてですが「na1」と「public」の2つが存在しています。 試しに、na1とpublicのテーブルをまったく同じにして SQLの部分を「select * from t_test」に変更すると「public」側のテーブルが覗けます。 しかし、SQLの部分を「select * from t_test.na1」に変更すると「スキーマが見つかりません」 というエラーが発生してしまいます。 スキーマがあるにもかかわらずこのエラーがでてしまうため原因が分からず困っております。 もしお分かりになる方いらっしゃいましたら、教えていただければと思います。 何卒よろしくお願いします。

    • ベストアンサー
    • PHP