web-dev-qa-db-fra.com

Erreur fatale: appel de la fonction non définie pg_connect

J'utilise Windows 7, php 5.3.5 et le serveur WAMP. J'ai deux fichiers php: trigger.php et background.php.
Je veux exécuter background.php en tant que processus d’arrière-plan. Je dois appeler ce fichier depuis trigger.php. Pour ce faire, j'ai utilisé la méthode ci-dessous. J'ai inclus le code suivant dans trigger.php pour que background.php soit traité en arrière-plan.

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

dans background.php, j'ai le code suivant pour me connecter à la base de données.

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

maintenant, en analysant cette ligne, j'obtiens l'erreur suivante: 

Erreur fatale: appel de la fonction non définie pg_connect () dans C:\wamp\www\background.php sur la ligne 3 Pile d'appels: 0,0002 322792 1. {main} () C:\wamp\www\background.php: 0

En cherchant sur Internet, j'ai trouvé des solutions et apporté les modifications recommandées ci-dessous dans le fichier php.ini,

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

j'ai aussi les fichiers php_pdo_pgsql.dll et php_pgsql.dll dans le dossier c:/wamp/bin/php/php5.3.5/ext/

Toutes les suggestions sont appréciées.

7
Shashidhar Gr

Configuration Apache 2.2.X

Ajoutez la ligne suivante à la configuration httpd.conf d’Apache 2.2.x: 

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

La ligne ci-dessus doit être entrée avant la ligne suivante.

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

PHP 5.2.X Configuration

Activez les deux lignes suivantes dans le fichier de configuration php.ini. Par 'Activer', je veux dire, supprimer le trailing; (point-virgule). Par ceux-ci, vous commentez la ligne.

extension=php_pdo_pgsql.dll
extension=php_pgsql.dll

Redémarrez WAMP

Testez en ajoutant ceci dans votre index.php

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

(source: http://www.plaatsoft.nl/wamp-postgresql-integration/ )

25
Jordi Kroon

si nous installons le serveur WAMP, nous aurons deux fichiers php.ini. un dans C:\wamp\bin\php\php5.3.5 et un autre dans C:\wamp\bin\Apache\Apache2.2.17\bin.

si nous exécutons un fichier php depuis un navigateur, le fichier php.ini dans C:\wamp\bin\Apache\Apache2.2.17\bin sera référé. si nous exécutons un fichier php à partir de la ligne de commande, puis le fichier php.ini dans C:\wamp\bin\php\php5.3.5 sera référé.

quels que soient les changements que j'ai faits activer/désactiver la dll dans les extensions PHP-> PHP, tous les changements seront enregistrés dans le fichier C:\wamp\bin\Apache\Apache2.2.17\bin\php.ini. mais le fichier C:\wamp\bin\php\php5.3.5\php.ini reste inchangé.

pour mon problème, j'ai apporté les modifications suivantes

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

dans le fichier C:\wamp\bin\php\php5.3.5\php.ini. Maintenant ça marche bien. :)

4
Shashidhar Gr

Dans mon cas avec Apache/2.4.10 PHP Version 5.4.32 PostgeSQL 9.3 J'ai ajouté libpq.dll dans Apache httpd.conf à partir de PHP catalogue parce qu'Apache a refusé de démarrer avec libpq.dll à partir de PostgreSQL 9.3

0
Jeff_Alieffson