web-dev-qa-db-ja.com

致命的なエラー:未定義の関数pg_connectの呼び出し

Windows 7、php 5.3.5、WAMPサーバーを使用しています。 2つのphpファイルがあります。trigger.phpとbackground.phpです。
background.phpをバックグラウンドプロセスとして実行したい。このファイルをtrigger.phpから呼び出す必要があります。これを達成するために、以下の方法を使用しました。次のコードをtrigger.phpに含めて、background.phpをバックグラウンドで処理できるようにしました。

$handle = popen('start /b C:\wamp\bin\php\php5.3.5\php.exe     C:\wamp\www\email3.php','r');

background.phpには、データベースに接続するための次のコードがあります。

$conn_string = "Host=localhost port=5432 dbname=tagbase user=postgres password=postgres";  

今、この行を解析すると、次のエラーが発生します:

致命的エラー:3行目のC:\ wamp\www\background.phpの未定義関数pg_connect()の呼び出し呼び出しスタック:0.0002 322792 1. {main}()C:\ wamp\www\background.php:0

インターネットで検索していくつかの解決策を見つけ、php.iniで推奨されているように変更を加えました。

uncommented, extension=php_pdo_pgsql.dll,
uncommented, extension=php_pgsql.dll,
uncommented, extension_dir = "c:/wamp/bin/php/php5.3.5/ext/",

また、php_pdo_pgsql.dllおよびphp_pgsql.dllファイルをc:/wamp/bin/php/php5.3.5/ext/フォルダ。

任意の提案をいただければ幸いです。

7
Shashidhar Gr

Apache 2.2.Xの設定

Apache 2.2.x httpd.conf構成に次の行を追加します。

LoadFile "C:/Program Files/PostgreSQL/{version}/bin/libpq.dll"

上記の行は、次の行の前に入力する必要があります。

LoadModule php5_module "c:/wamp/bin/php/php5.2.11/php5Apache2_2.dll"

PHP 5.2.X設定

Php.ini設定ファイルで次の2行を有効にします。 「有効にする」とは、末尾を削除することです。 (セミコロン)。これらによって、行のコメントを外します。

extension=php_pdo_pgsql.dll
extension=php_pgsql.dll

WAMPを再起動します

これをindex.phpに追加してテストします

echo extension_loaded('pgsql') ? 'yes':'no';

(ソース: http://www.plaatsoft.nl/wamp-postgresql-integration/

25
Jordi Kroon

wAMPサーバーをインストールすると、2つのphp.iniファイルが取得されます。 1つはC:\ wamp\bin\php\php5.3.5に、もう1つはC:\ wamp\bin\Apache\Apache2.2.17\binにあります。

ブラウザからphpファイルを実行すると、C:\ wamp\bin\Apache\Apache2.2.17\binにあるphp.iniファイルが参照されます。コマンドラインからphpファイルを実行すると、phpが参照されます。 C:\ wamp\bin\php\php5.3.5のiniファイルが参照されます。

pHP-> PHP拡張機能でdllを有効/無効にする変更はすべて、C:\ wamp\bin\Apache\Apache2.2.17\bin\php.iniファイルに保存されます。ただし、C:\ wamp\bin\php\php5.3.5\php.iniファイルは変更されません。

私の問題のために、私は次の変更を行いました

uncommented, extension=php_pdo_pgsql.dll,
uncommented, extension=php_pgsql.dll,
uncommented, extension_dir = "c:/wamp/bin/php/php5.3.5/ext/",

c:\ wamp\bin\php\php5.3.5\php.iniファイル。今、それはうまくいきます。 :)

4
Shashidhar Gr

私の場合、Apache/2.4.10 PHP Version 5.4.32 PostgeSQL 9.3を使用しています。Apacheが拒否したため、PHPカタログからlibpq.dllをApache httpd.confに追加しましたPostgreSQL 9.3のlibpq.dllから始める

0
Jeff_Alieffson