Vous n'êtes pas identifié(e).
Pages : 1
bonjour à tous
j'ai un problème à me connecter avec PDO à ma base postgres sur une machine CentOS
mon code est le suivant
$hostname = "localhost";
$database = "maBase";
$username = "monUser";
$password = "monPwd";
$this->db = new PDO('pgsql:host='.$hostname.';dbname='.$database, $username, $password);
$this->db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
return $this->db;
les mêmes scripts sur une autre machine sous Mac os x et utilisant MAMP, marche sans problème.
faut il configurer quelque chose sur lamachine Cent OS que j'ai oublié de faire
NB : en consultant le phpinfo()
je vois que la partie postgreSQL est affiché et le PDO est activé aussi
Merci à vous
Hors ligne
Bonjour,
y a-t-il un message d'erreur php ? Sinon dans le log postgresql. La configuration de votre serveur autorise bien cette connexion ?
Julien.
https://rjuju.github.io/
Hors ligne
le message erreur php que je reçois est le suivant :
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08006] [7] could not connect to server: Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?
could not connect to server: Permission denied Is the server running on host "localhost" and accepting TCP/IP connections on port 5432?' in /var/www/html/pg_req/class/dbConnect.class.php:24 Stack trace: #0 /var/www/html/pg_req/class/dbConnect.class.php(24): PDO->__construct('pgsql:host=loca...') #1 /var/www/html/pg_req/class/dbConnect.class.php(44): Connexion->connect() #2 /var/www/html/pg_req/urgent.php(24): dbConnect->__construct() #3 {main} thrown in /var/www/html/pg_req/class/dbConnect.class.php on line 24
Hors ligne
Le serveur est bien sur la même machine que votre serveur http, sur le port 5432 ?
Le user de connexion est bien autorisé (pg_hba.conf) à se connecter sur la base choisie ?
Julien.
https://rjuju.github.io/
Hors ligne
oui tout est ok
le même serveur sur la même machine
le port est bien 5432 ( utilisé par pgAdmin III et ça marche très bien )
le même user et mot de passe utilisé par pgAdmin III
Hors ligne
La connexion se fait en tcp ou en socket unix ou les 2 ?
Julien.
https://rjuju.github.io/
Hors ligne
hummm
aucune idée, comment vérifier ?
Hors ligne
Quelle chaine de connexion avez-vous rentré sur pgAdmin ?
Sinon regardez les lignes renseignées dans le pg_hba.conf
Vous pouvez enlever le host='.$hostname dans votre chaîne de connexion pdo voir si cela vous permet de vous connecter.
Julien.
https://rjuju.github.io/
Hors ligne
je crois que par les deux tcp et spcket unix hum
dans mon pg_hba.conf j'ai :
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Hors ligne
dans le php à la place de mettre localhost vous avez testé de mettre 127.0.0.1 ?
Hors ligne
OUi
j'ai aussi essayer de mettre l'adresse ip de la machine
mais rien
Dernière modification par youssef (21/06/2012 16:55:54)
Hors ligne
sinon il faut logguer toutes les requêtes de postgres et comme vous verrez comment la requête de php arrive, il doit y avoir un truc non valable.
Hors ligne
vous voulez dite vérifier le log de postgres ?
Hors ligne
ouai trouver la log de connexion/erreur et voir réellement ce qu'il y a, ça se trouve c'est une erreur stupide et c'est le meilleur moyen de trouver sans perdre de temps.
Dernière modification par kenrio (21/06/2012 17:34:16)
Hors ligne
Bonjour
juste pour vous informer que mon problème est résolu, il était du un SELinux qui bloquait les connexions de php
solution : si ce n'est pas un serveur de prod, et plus rapidement voir http://blog.nicolargo.com/2007/06/activ … linux.html
si non pour plus de détails voir : http://linux.die.net/man/8/httpd_selinux
bon courage à tous
Hors ligne
Pages : 1