• ベストアンサー

PHPをPostgreSQLに接続するには?

PHPから、PostgreSQLに接続させたいのですが、 具体的に、どうすればいいのでしょうか? サーバーのルート権限は保有しており、いろいろ検索した結果、 PHPよりPostgreSQLへ接続を行うためには、 > --with-pgsql[=DIR] オプションを指定するみたいですが、 ここにどうやって辿り着くのかが、分りません。 config コマンド?とはなんでしょうか? ちなみに、OSは、Red Hatです。

  • PHP
  • 回答数4
  • ありがとう数0

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

  • ベストアンサー
回答No.4

mtfoggyさんもおっしゃっている通り、 まさか、 pg_connect("user=FTP/Shellアカウント名 password=パスワード dbname=データベース名"); のまま実行してないですよね? ここはopenな場なので、user,password,dbnameは公開しないほうがよろしいかと思いますが、そのまま実行していたら、 もう返答することは不可能です・・・ サーバにはルートをお持ちということなので、 コンソールから、psql でpostgreSQLにきちんとアクセスできる状態でしょうか? サーバにてpostgreSQLが動作していない可能性がありますが、いかがでしょうか?

その他の回答 (3)

  • mtfoggy
  • ベストアンサー率14% (37/255)
回答No.3

>pg_connect("user=FTP/Shellアカウント名 password=パスワード dbname=データベース名"); これは、何かの見本ですか? それとも、本当にこの通りに実行してるのですか? >/index.php on line 2 index.phpの2行目でいきなりエラーですけど。 >config コマンド?とはなんでしょうか? >Fatal error: Call to undefined function: pg_connect 本当に、postgresを有効にしてPHPをコンパイルしたんですか? 基本的な知識がまったく欠けているように思えますが。

mikichan-e
質問者

補足

以下、ご回答です。 >これは、何かの見本ですか? それとも、本当にこの通りに実行してるのですか? PHPスクリプトに記述したデータベースへのアクセスは以下通りです。 $con = pg_connect("name=ユーザー名 user=ユーザー名 password=パスワード"); >本当に、postgresを有効にしてPHPをコンパイルしたんですか? そのコンパイルの方法がわからなくても、困っています。

回答No.2

どうやってアクセスしてるのでしょうか? 具体的に手法およびコードの提示がないと、 何が原因で接続できないのか分りません。

mikichan-e
質問者

補足

pg_connect("user=FTP/Shellアカウント名 password=パスワード dbname=データベース名"); で、アクセスしております。 ちなみに、http://ドメイン名 にアクセスすると、 以下の様なエラーになります。 Fatal error: Call to undefined function: pg_connect() in /var/www/ホームディレクトリ/index.php on line 2

回答No.1

<?php phpinfo()?> を phpinfo.php なりとして保存しておいて、 ブラウザから確認してみましょう。 Configure Command の項目に--with-pgsql' がついていて、 pgsqlの項目が出力されていれば、 phpからpostgreSQLが利用できると思いますよ。

mikichan-e
質問者

補足

ありがとうございます。 仰せのとおりに、項目は見つかったのですが、 やはり、PHPからアクセスを試みると、上手くいきません。

関連するQ&A

  • 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
  • PHP4 + PostgreSQL8 + Windows でPHPとPostgresの接続エラー?

    現在、Windowsで以下の環境を構築しています。 Windows XP SP2 Apache 2.0.58 PHP 4.2.2 PostgreSQL 8.1.4 インストールの最後、PHPとPostgreSQLの設定を行ったのですが、 phpinfo()で確認をしても、pgsql という項目は表示されるのに バージョンなどが表示されず、 実際PHPソースで接続してみてもエラーとなってしまいます。 Webを参考にした情報では、php.ini は、 extension_dir = "C:/php/extensions" extension=php_pgsql.dll の2行の設定で認識するという情報しか得られず、行き詰っています。 PHPのフレームワークにMojavi2を使用することになっていますので PHP5にすることはできないのです.... PHP4をPostgreSQL8では相性が悪いのでしょうか? 情報をいただければと思います。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpのインストールについて

    phpで別サーバ(DBのみ)のpostgresqlに接続しようとした場合、接続できませんでした。 php-pgsql?かpgsql.soが無いのが原因ぽいのですが、検索してもyumでインストールとかばかりでソースからインストールした際の記述がみつけられませんでした… phpインストール時にpostgres(php-pgsql?)を有効するにはどうしたらいいのでしょうか? ちなみにpostgresqlとphpが同一サーバ内にインストールされているサーバ(現環境)からこのDBのみのサーバにTCP/IPで接続はできました。 OS:CentOS4.5(共に) apache2.2.6 php:5.2.5 postgres8.2.5 php cofigureオプション ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex よろしくお願いします。

    • ベストアンサー
    • PHP
  • 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 コマンドで一回オプションを全て消さないとだめなのかがわからなくて困っています。  どなたか詳しい方がいらしたら、教えてください。  よろしくお願いいたします。

  • PHP5でpostgresqlのデータベースに接続する簡単なPHPプロ

    PHP5でpostgresqlのデータベースに接続する簡単なPHPプログラムを書きました。 ローカルホストにブラウザでアクセスすると正常に動作し、 コマンドラインで実行すると、次のエラーが発生します。 PHP Fatal error: Call to undefined function pg_connect() コマンドラインでphpのバージョンを見ると以下のとおりです。 C:\>php -v PHP 5.3.0 (cli) (built: Jun 29 2009 21:25:23) Copyright (c) 1997-2009 The PHP Group Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies ブラウザで、phpinfo();を実行した際の情報には postgresqlのDBドライバがあります。 pdo_pgsql PDO Driver for PostgreSQL enabled PostgreSQL(libpq) Version 8.3.3 Module version 1.0.2 Revision $Id: pdo_pgsql.c,v 1.7.2.11.2.1.2.4 2009/03/28 01:58:49 mbeccati Exp $ pgsql PostgreSQL Support enabled PostgreSQL(libpq) Version 8.3.3 Multibyte character support enabled SSL support enabled Active Persistent Links 0 Active Links 0 Directive Local Value Master Value pgsql.allow_persistent On On pgsql.auto_reset_persistent Off Off pgsql.ignore_notice Off Off pgsql.log_notice Off Off pgsql.max_links Unlimited Unlimited pgsql.max_persistent Unlimited Unlimited テストソースです。パスワード・DB名は伏せています。 <HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <TITLE>PostgreSQLテスト</TITLE> </HEAD> <BODY> <?php $db_host = "localhost"; $db_port = 5432; $db_user = "postgres"; $db_pass = "xxxx"; $db_name = "yyyy"; // PostgreSQL 接続 if (!($cn = pg_connect("host=$db_host port=$db_port dbname=$db_name user=$db_user password=$db_pass"))) { die; } // PostgreSQL 切断 pg_close($cn); // 正常終了 print "<P>正常終了</P>"; ?> </BODY> </HTML> よろしくお願いします。

    • ベストアンサー
    • PHP
  • 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の4.4.9と5.2.13の共存について。

    PHPの4.4.9と5.2.13の共存について。 OSはRHLE4で既存で動いているPHP4のプログラムがあります。 今回、開発してもらったPHP5のプログラムを同じサーバで動作させようと思っております。 既にPHP5.2.9が入っておりましたが、オプションでMySQLがなかったため、 PHP5をアンインストールして、ソースからコンパイルしてインストールしhttpdを再起動しました。 しかし、phpinfo()で確認したところ、PHPのVersionが5.2.9のまま変化ありません。 ソースからのインストールが初心者なもので大変申し訳御座いませんが、 PHP4と5の共存とソースからインストールした際のアンインストール方法を教えていただけますでしょうか? インストール方法は下記サイトを参考にPHP5バージョンで行ないました。 http://d.hatena.ne.jp/shogo0809/20100714/1279110673 ./configureオプションは下記です。 --prefix=/usr/local/php5 \ --with-config-file-path=/usr/local/php5/lib \ --with-sqlite \ --with-mysql=/usr/local/mysql5 \ --enable-sigchild \ --enable-mbstring \ --enable-mbregex \ --enable-force-cgi-redirect \ --enable-zend-multibyte \ --with-gd \ --with-jpeg-dir=/usr \ --with-png-dir=/usr \ --with-zlib \ --with-zlib-dir=/usr \ --with-openssl \ --enable-ftp \ --with-curl \ --with-pgsql=/var/lib/pgsql

    • ベストアンサー
    • PHP
  • PHP5からPostgres6.5.3の接続の件で

    非常に初歩的な質問ですいません。 Postgres6.5.3の動作しているサーバーへ、別サーバーからPHP3でアクセスすることは正常にできます。しかし、さらに別のサーバーからPHP5でアクセスすると、pg_connectでエラーが出て接続できません。接続の際の認証等は設定していません。これは、PHP5に対応していないからということなのでしょうか? [postgres-Server] Red Hat Linux release 6.2 Kernel 2.2.14-5.0 on an i686 postgresql-6.5.3 [PHP3-Server] Red Hat Linux release 6.2 Kernel 2.2.14-5.0 on an i686 php-3.0.18-i18n-ja-3 apache_1.3.24 [PHP5-Server] Vine Linux 4.2 Kernel 2.6.16-0vl76.33 on an i686 php-5.2.5 apache_2.2.3

    • 締切済み
    • PHP
  • FreeBSDで、PHPとpostgreSQLを連携させたい

    かなり初心者です。 FreeBSDで、FTPのPackageからPHPとpostgreSQLをインストールしました。 Packageからの自動的なインストールだったので、 面倒な設定なく簡単にインストールが出来たのですが、 PHPのConfigure Commandには、--with-pgsql の設定がありませんでした。 この場合、PHPでpostgreSQLを操作できるようにするには、 どうしたらいいのでしょうか? PHP関連の書籍をみると、 拡張モジュールで組み込めるような事が書いてありますが、 状況が少し違っているようで、うまくいきません。 FreeBSD4.7R Apache1.3.27 PHP4.2.3 postgreSQL7-2-2 です。 よろしくお願い致します。

  • PostgreSQL

    これから、PHP4&PostgreSQLでサイト開発を行いたいと 考えています。 一応、RED HAT Linuxのサーバーは設置してありますが、 作業の効率(使い慣れているだけ・・)を考えると、windows上で開発して、サーバーに移植したいと考えています。 WINDOWSマシンにはApacheをインストールしてあります。 PHP4については、Win32バージョンがあることは確認しましたが、PostgreSQLについては、Win32バージョンは存在しているのでしょうか? 書籍にはあるらしき事が記載されていましたが、どこからダウンロードできるかが分かりません。 もし、ご存知の方がいらっしゃれば、そのサイトを教えて頂けませんでしょうか? 宜しくお願い致します。