• 締切済み

データベースに接続できない

postgresql-7.2.3.tar.gzインストール時には、下記内容でデータベースに接続できていました。 <?php $con = pg_connect("dbname='database_6' user='postgres' password='xxx'") if(!$con){ print "DB connection failed!!\n"; }else{ print "DB connection successful!!\n"; } ?> ところが、postgresql-8.0.26.tar.gzをインストールしたら、上記内容でデータベースに接続できなくなり、 Fatal error: Call to undefined function: pg_connect() in /usr/local/apache/htdocs/sql.php on line 2 というエラーメッセージが表示されます。 phpinfo();で確認もしましたが、ない感じです。Additiional Modulesのどこかを見れば、いいのでしょうか? pgsql.soは/usr/local/lib/php/extentions/pgsql.soにあります。/usr/local/lib/php.iniのextention_dir = ./を以下のように修正し、 extention_dir = /usr/local/lib/php/extentions extention=pgsql.so /usr/local/apache/bin/apachectl restart も実行しています。

みんなの回答

  • t_ohta
  • ベストアンサー率38% (5068/13243)
回答No.3

PostgreSQL自体が正常に動いているようであれば、pgsql.soをmakeし直してみてはいかがでしょう。 PostgreSQLのメジャーバージョンを上げているようなので、その影響があるかもしれませんね。

参考URL:
http://d.hatena.ne.jp/bco/20101229/1293627841
  • t_ohta
  • ベストアンサー率38% (5068/13243)
回答No.2

PHPからではなく、psqlコマンドで接続できますか?

Feruza
質問者

お礼

早速の回答ありがとうございます。 例えば、 su - postgres psql database_6 のことでしょうか?こちらはできています。テーブルを作成して、csvファイルをコピーし、内容もちゃんと文字化けせずに確認できています。PHPでは接続できていないということになると思います。

  • localica
  • ベストアンサー率52% (202/385)
回答No.1

2行目にセミコロンがないのですが、釣りではないのでしょうか?

Feruza
質問者

お礼

早速の回答ありがとうございます。 ミスタイプです。実際のphpファイルには";"はありました。 なお、postgresのパスワードもrootで設定され、Apache実行ユーザのnobodyもpostgresで設定されています。

Feruza
質問者

補足

postgreSQLは自動起動するように設定してあります。Apacheは手動ですが…。

関連するQ&A

  • postgreSQLのinitdb

    postgreSQL7.2.3のインストールを行いました。 % tar vxfz postgresql-7.2.3.tar.gz % cd postgresql-7.2.3 % ./configure --enable-locale --enable-multibyte=EUC_JP |& tee Configure.out % make | & tee Make.out % su # tcsh % make install | &tee Make_install.out % chown -R postgres:postgres /usr/local/pgsql ここまでは何も問題なく終わったのですが、 次に initdb を実行したところ以下エラーが出ます。 % su postgres % /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data ld.so.1: /usr/local/pgsql/bin/pg_encoding: 重大なエラー: libgcc_s.so.1: open に 失敗しました: ファイルもディレクトリもありません。 initdb: pg_encoding failed Perhaps you did not configure PostgreSQL for multibyte support or the program was not successfully installed. ↑ここまで 「マルチバイトサポートしていません」 「インストールに失敗しています」というような内容なのですが、 何がダメだったのでしょうか? ちなみにOSは Solaris9/02です。

  • RedHat9にPostgreSQL構築できるが、再起動すると消滅

    WindowsXP内のVMWareに仮想マシンRedHat9を構築して便利に使っています。今回この中ににPostgreSQL構築しpostgresql-8.1.3.tar.gzを/usr/local/srcにダウンロード #useradd postgres #mkdir /usr/local/pgsql #mkdir /usr/local/pgsql/data #cd /usr/lcal/src #tar zxfv postgres-8.1.3.tar.gz #chown postgres.postgres /usr/locl/pgsql #chown -R postgres.postgres postgresql.1.3 #su - postgres $cd /usr/local/src/postgresql-8.1.3 $./configure $gmake $gmake install 以上で無事postgreSQLデータベースが完成 引き続きユーザpostgresで $/usr/local/pgsql/bin/initdb -D /usr/local/pogsql/data $/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data $/usr/local/pgsql/bin/createdb TestDB $/usr/local/pgsql/bin/psql TestDB で作成したTestDBに接続でき、テーブルも作りました。 ところがRedHat9をいったん再起動するとできている筈のTestDBに接続できなくなります。どこかにどこかに設定ミスがありますか。何かヒントをいただければうれしいです。 $/usr/local/

  • CentOS5でLAPPを構築したいのですが・・・

    CentOS5にApacheとPostgreSqlとPHPをインストールしたいんですがうまくいきません。 httpd-2.2.14 postgresql-8.2.6 php-5.2.6 を入れようと思っています。 CentOS5をインストールして、IPアドレスやホスト名などの設定後、もともとインストールされているApacheなどを # rpm -qa | grep 'httpd' # rpm -e httpd などのコマンドで削除ごに #/usr/local/src/ に上記のApcheやPHPなどのファイルを持ってきてApache→Postgresql→PHPの順番にインストールしました。 Apcheの場合 # cd /usr/local/src # tar xfz /usr/local/src/httpd-2.2.14.tar.gz # cd httpd-2.2.14 # /configure # make # make install Postgresqlの場合 # /usr/sbin/adduser postgres # chown postgres:postgres /usr/local/pgsql # mkdir /usr/local/src/postgres-8.2.6 # chown postgres:postgres /usr/local/src/postgresql-8.3.7 # su - postgres # cd /usr/local/src # tar xfz /usr/local/src/postgres-8.2.6.tar.gz # cd /usr/local/src/postgres-8.2.6 # ./configure # make # make install PHPの場合 # cd /usr/local/src # tar xfz /usr/local/src/php-5.2.6.tar.gz # cd /usr/local/src/php-5.2.6 # ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex --with-pgsql # make # make install 上記の様なコマンドでインストールしましたがうまくいきません 詳細な設定もしているつもりですがいまいちうまくいきません どうか皆さまの知識をどうかお貸しくださいm(_ _)m

  • php*.iniファイルが見当たらない!?

    こんにちは、kanpoです。 早速質問なんですが。。。 php.iniファイルが見当たりません。(?_?) phpはphp3なので、php3.iniかなと思い探しましたが やっぱりありません。 ただ、php3.ini-distというファイルは発見しました。 こちらを覗いたところphp3.iniファイルそのものの様な気がしたのですが。 こちらを編集し、”/usr/local/lib/"におけばいいんでしょうか? どなたか、ご教示お願いします。 環境: apache_1.3.17.tar.gz php-3.0.18-i18n-ja-2.tar.gz postgresql-7.0.3.tar.gz

    • ベストアンサー
    • PHP
  • Postgresの拡張モジュール導入について

    PHPでpgsql拡張モジュールを導入したいのですがうまくいきません。アドバイスをお願いいたします。 環境:Apache2 / PHP5.0.2 / Postgresql8.0 今までのしたこと: (1)使えないモジュールの把握  Fatal error: Call to undefined function pg_query_params() in /hoge/fuga.php (2)ソースファイル配下(php-5.2.10/ext/pgsql)にてpgsql拡張モジュールをインストール  phpize  ./configure --with-php-config=/usr/local/php/bin/php-config --with-pgsql=/usr/local/pgsql  make  make install (3)pnp.iniにextension_dirの設定変更と、extension=pgsql.soを追記 (4)Apacheの再起動 (3)のphp.iniが動作するPHPから呼び出されていること、extension_dirの設定内容が間違っていないことは確認済みですが、モジュールは使えないままです。 追加でできる確認方法か、とばしている手順があれば教えてください。よろしくお願いします。

    • 締切済み
    • PHP
  • phpのextension_dirを複数指定したい

    php 4.3.9を使用しております。 redhatのup2dateでインストールしたphpを使用しているのですが、 php.iniでextension_dirが extension_dir = /usr/lib/php4 となっておりますが、これを extension_dir = /usr/lib/php4:/another/dir と複数指定したく思っています。 現在extensionの開発をしていて、 毎回自作のextensionをコピーするのがかったるいので なんとかしたいなぁ、というのが目的です。 しかし、上記のように指定すると、 PHP Warning: Unknown(): Unable to load dynamic library '/usr/lib/php4:/another/dir/gd.so' - /usr/lib/php4:/another/dir/gd.so: cannot open shared object file: No such file or directory in Unknown on line 0 (後略) と、すべてのextensionについてエラーが出てしまいます。 何かいい方法はないでしょうか?よろしくお願いします。

    • ベストアンサー
    • PHP
  • データベースクラスタの変更

    Debian etch (Linux Debian 2.6.25.1-kuroboxHG) な環境に aptitude install postgresql8 として、 PostgreSQL バージョン 8.1.11 を使っています。 インストールした直後のデフォルトのデータベースクラスタは /var/lib/postgresql/8.1/main でしたが、 # df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda1 2063504 718136 1240548 37% / tmpfs 63504 0 63504 0% /lib/init/rw tmpfs 63504 0 63504 0% /dev/shm /dev/hda3 116413420 3093484 113319936 3% /mnt のような環境ですので、データベースクラスタを /mnt/share/pgsql に作ろうと思い /usr/lib/postgresql/8.1/bin/initdb -D /mnt/share/pgsql としました。 Success. You can now start the database server using: /usr/lib/postgresql/8.1/bin/postmaster -D /mnt/share/pgsql or /usr/lib/postgresql/8.1/bin/pg_ctl -D /mnt/share/pgsql -l logfile start となったので /usr/lib/postgresql/8.1/bin/pg_ctl -D /mnt/share/pgsql -l logfile start したところ server.crt がないと怒られたので /var/lib/postgresql/8.1/main に有ったシンボリックリンクを作成 この時に同じフォルダにある二つも作成 root.crt -> /etc/postgresql-common/root.crt server.crt -> /etc/ssl/certs/ssl-cert-snakeoil.pem server.key -> /etc/ssl/private/ssl-cert-snakeoil.key としたのですが 再起動してもPostgreSQLがもとのまま /var/lib/postgresql/8.1/main を使って起動しています。 どこを見直すのかご享受ください。 よろしくお願いします。

  • PostgreSQLをCentOS5にインストールしました。

    閲覧有難うございます。 質問内容なのですが、Postgresqlをインストールしたのですがpostgresql.confとpg_hba.confが見つかりません。 OSはCentOS5です。 インストール方法は以下の手順で行いました。 # /usr/sbin/adduser postgres # chown postgres:postgres /usr/local/pgsql # mkdir /usr/local/src/postgres-8.2.6 # chown postgres:postgres /usr/local/src/postgresql-8.3.7 # su - postgres # cd /usr/local/src # tar xfz /usr/local/src/postgres-8.2.6.tar.gz # cd /usr/local/src/postgres-8.2.6 # ./configure # make # make install また、 [root@ ~]# su - postgres -bash:  LD_LIBRARY_PATH=/usr/local/pgsql/lib: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  PATH=/usr/local/pgsql/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  MANPATH=/usr/local/pgsql/man:: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  export: command not found -bash:  PATH=/usr/local/pgsql/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  MANPATH=/usr/local/pgsql/man:: そのようなファイルやディレクトリはありません -bash:  export: command not found [postgres@ ~]$ のようなエラーがはかれるようになりました。 どうか皆様のお力をお貸しください。

  • 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