Discussion:
php PDO et psql
(trop ancien pour répondre)
Une Bévue
2012-09-18 08:40:45 UTC
Permalink
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)...
Olivier Miakinen
2012-09-18 09:38:29 UTC
Permalink
Bonjour,

Je ne connais rien aux connexions à des bases de données, mais je
peux te proposer des pistes de recherche.
Post by Une Bévue
si je me connecte à une base distante ça roule, par contre si je me
[...]
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 ?
Post by Une Bévue
d'ailleurs si je me connecte à cette base en CLI, ça roule.
[...]
PHP Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[08006] [7] ' in /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 ?
Post by Une Bévue
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...
Post by Une Bévue
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
Une Bévue
2012-09-18 10:15:40 UTC
Permalink
Post by Olivier Miakinen
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...
Olivier Miakinen
2012-09-18 10:23:38 UTC
Permalink
Post by Une Bévue
le fichier de conf "postgresql.conf"
indique le port 5433 au lieu du port "habituel" 5432...
Merci du retour.

Cordialement,
--
Olivier Miakinen
Une Bévue
2012-09-18 12:22:31 UTC
Permalink
Post by Olivier Miakinen
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...
Florence
2012-09-20 09:49:16 UTC
Permalink
Post by Une Bévue
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
Une Bévue
2012-09-20 17:06:19 UTC
Permalink
Post by Florence
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.

Florence
2012-09-18 09:39:57 UTC
Permalink
Post by Une Bévue
bon, je tourne en rond...
[...]
Erreur HTTP 500 (Internal Server Error)
Alors il faut regarder le log d'apache pour connaître l'erreur.
Post by Une Bévue
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 ?
Post by Une Bévue
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 !
Post by Une Bévue
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
Une Bévue
2012-09-18 10:13:16 UTC
Permalink
Post by Florence
Post by Une Bévue
bon, je tourne en rond...
[...]
Erreur HTTP 500 (Internal Server Error)
Alors il faut regarder le log d'apache pour connaître l'erreur.
Post by Une Bévue
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 ?
Post by Une Bévue
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
Post by Florence
Post by Une Bévue
MAIS une recherche internet m'indique que php en cli et par apache2
n'ont pas les mêmes fichiers de config.
"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...
Post by Florence
Ce n'est pas un pb PHP.
Loading...