Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

php PDO et psql

8 réponses
Avatar
Une Bévue
bon, je tourne en rond...

voila mon problème avec pdo et psql :

si je me connecte à une base distante ça roule, par contre si je me
connecte à une base locale par :
$dbname="yt_tests";
$host="localhost";
$username="yt";
$password="1234";
$port="5432";
$db = new
PDO("pgsql:host=$host;port=$port;dbname=$dbname;user=$username;password=$password;");
[...]

j'ai une erreur 500 :
Erreur HTTP 500 (Internal Server Error)

mais le log Postgres n'indique aucun problème.
d'ailleurs si je me connecte à cette base en CLI, ça roule.

comme ça roule avec un serveur distant, j'imagine que je peux supposer
que mes différents modules *.so, sont bien chargés, c'est d'ailleurs ce
que m'indique mon fichier info.php.

j'ai regardé ce que ça donne en cli par :

$ php index.php # qui donne :
PHP Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[08006] [7] ' in /home/yt/Sites/yt_tests/index.php:86
Stack trace:
#0 /home/yt/Sites/yt_tests/index.php(86):
PDO->__construct('pgsql:host=loca...')
#1 {main}
thrown in /home/yt/Sites/yt_tests/index.php on line 86


MAIS une recherche internet m'indique que php en cli et par apache2
n'ont pas les mêmes fichiers de config.

Donc là je retse bloqué, basiquement ce que je ne pige pas du tout c'est
pourquoi ça marche en remote ( de mon Dell vers mon iMac) et pas en
local (de mon Dell sur la base dans mon dell)...

8 réponses

Avatar
Olivier Miakinen
Bonjour,

Je ne connais rien aux connexions à des bases de données, mais je
peux te proposer des pistes de recherche.

Le 18/09/2012 10:40, Une Bévue a écrit :

si je me connecte à une base distante ça roule, par contre si je me
connecte à une base locale par :
[...]
j'ai une erreur 500 :
Erreur HTTP 500 (Internal Server Error)

mais le log Postgres n'indique aucun problème.



Il « n'indique aucun problème », cela veut dire que pour lui la
requête a bien été exécutée ? Ou bien qu'il n'indique rien du
tout, comme ce serait le cas s'il ne recevait même pas cette
requête ?

d'ailleurs si je me connecte à cette base en CLI, ça roule.
[...]

j'ai regardé ce que ça donne en cli par :

$ php index.php # qui donne :
PHP Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[08006] [7] ' in /home/yt/Sites/yt_tests/index.php:86
Stack trace:
#0 /home/yt/Sites/yt_tests/index.php(86):
PDO->__construct('pgsql:host=loca...')
#1 {main}
thrown in /home/yt/Sites/yt_tests/index.php on line 86



Euh... « Fatal error », ça me paraît assez éloigné du comportement
permettant de dire « si je me connecte à cette base en CLI, ça roule ».
Tu n'es pas d'accord ?

MAIS une recherche internet m'indique que php en cli et par apache2
n'ont pas les mêmes fichiers de config.



Tu écris ça comme si tu ne savais pas où sont les fichiers de config
dans l'un ou l'autre cas (cli ou apache2), je me trompe ? Parce que
dans le cas contraire tu saurais les comparer et voir si oui ou non
ils sont différents...

Donc là je retse bloqué, basiquement ce que je ne pige pas du tout c'est
pourquoi ça marche en remote ( de mon Dell vers mon iMac) et pas en
local (de mon Dell sur la base dans mon dell)...



Est-ce que c'est vraiment « remote / local » la différence entre les
deux situations ? Est-ce que ça ne pourrait pas être par exemple
« iMac / Dell » ? Pour en avoir le c½ur net, tu pourrais essayer les
deux autres cas :
- en remote de ton iMac vers to Dell
- en local de ton iMac vers ton iMac


Par ailleurs, tu as certainement dû poser la question sur le groupe
consacré aux bases de données (que je ne lis pas). Ils n'avaient pas
d'idées à te suggérer ?

Cordialement,
--
Olivier Miakinen
Avatar
Florence
Le 18/09/2012 10:40, Une Bévue a écrit :
bon, je tourne en rond...

voila mon problème avec pdo et psql :

[...]

j'ai une erreur 500 :
Erreur HTTP 500 (Internal Server Error)



Alors il faut regarder le log d'apache pour connaître l'erreur.

mais le log Postgres n'indique aucun problème.
d'ailleurs si je me connecte à cette base en CLI, ça roule.



Avec le même script php ? et les mêmes données ?


j'ai regardé ce que ça donne en cli par :

$ php index.php # qui donne :
PHP Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[08006] [7] ' in /home/yt/Sites/yt_tests/index.php:86
[...]



Donc ça "ne roule pas" en cli !


MAIS une recherche internet m'indique que php en cli et par apache2
n'ont pas les mêmes fichiers de config.



Une petite recherche sur le SQLSTATE donne :
"If you have not activated the TCP/IP port in postgresql.conf then
postgresql doesn't accept any incoming requests from an TCP/IP port"
C'est donc un problème de configuration de la base locale !
Ce n'est pas un pb PHP.

--
Flo
Avatar
Une Bévue
Le 18/09/2012 11:39, Florence a écrit :
Le 18/09/2012 10:40, Une Bévue a écrit :
bon, je tourne en rond...

voila mon problème avec pdo et psql :

[...]

j'ai une erreur 500 :
Erreur HTTP 500 (Internal Server Error)



Alors il faut regarder le log d'apache pour connaître l'erreur.

mais le log Postgres n'indique aucun problème.
d'ailleurs si je me connecte à cette base en CLI, ça roule.



Avec le même script php ? et les mêmes données ?


j'ai regardé ce que ça donne en cli par :

$ php index.php # qui donne :
PHP Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[08006] [7] ' in /home/yt/Sites/yt_tests/index.php:86
[...]



Donc ça "ne roule pas" en cli !



NON, c'est vrai en CLI par php mais en cli par psql ça roule :
$ psql -h localhost -U yt -d yt_tests
Password for user yt:
psql (9.1.5)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

yt_tests=> select * from cities;
name | location
---------------+-----------
San Francisco | (-194,53)
(1 row)

yt_tests=> q


MAIS une recherche internet m'indique que php en cli et par apache2
n'ont pas les mêmes fichiers de config.



Une petite recherche sur le SQLSTATE donne :
"If you have not activated the TCP/IP port in postgresql.conf then
postgresql doesn't accept any incoming requests from an TCP/IP port"


C'est donc un problème de configuration de la base locale !



Bon, je viens tout juste de trouver, dans mon postgresql.conf, le port
utilisé est 5433...

ET j'essayais de me connecter en 5432...

Ce n'est pas un pb PHP.

Avatar
Une Bévue
Le 18/09/2012 11:38, Olivier Miakinen a écrit :
Par ailleurs, tu as certainement dû poser la question sur le groupe
consacré aux bases de données (que je ne lis pas). Ils n'avaient pas
d'idées à te suggérer ?



Ben si, mais bon, ce qui m'a été suggéré m'a induit en erreur, en
réalité, je viens de trouver, le fichier de conf "postgresql.conf"
indique le port 5433 au lieu du port "habituel" 5432...
Avatar
Olivier Miakinen
Le 18/09/2012 12:15, Une Bévue a écrit :

le fichier de conf "postgresql.conf"
indique le port 5433 au lieu du port "habituel" 5432...



Merci du retour.

Cordialement,
--
Olivier Miakinen
Avatar
Une Bévue
Le 18/09/2012 12:23, Olivier Miakinen a écrit :
Merci du retour.


ben oui, j'essaie toujours, dans la mesure du possible de terminer un
fil par une solution.

le truc est de savoir pourquoi, sans avoir changé moi même cette ligne
dans postgresql.conf, la valeur du port par défaut est passée de 5432
(précédente install du mois de mai) à 5433, nouvelle install de début
septembre...
Avatar
Florence
Le 18/09/2012 14:22, Une Bévue a écrit :

le truc est de savoir pourquoi, sans avoir changé moi même cette ligne
dans postgresql.conf, la valeur du port par défaut est passée de 5432
(précédente install du mois de mai) à 5433, nouvelle install de début
septembre...




Souvent c'est lorsqu'on installe une autre version de postgresql en
parallèle de la première, ou sans avoir supprimé la précédente.

--
Flo
Avatar
Une Bévue
Le 20/09/2012 11:49, Florence a écrit :
Souvent c'est lorsqu'on installe une autre version de postgresql en
parallèle de la première, ou sans avoir supprimé la précédente.


OUi, merci, c'est ce qu'on m'a expliqué sur PostgreSQL.fr.