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.
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/ )
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. :)
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