php et Erreur HTTP 500 (Internal Server Error)

Le
Une Bévue
dans un script php j'ai cette erreur :
Erreur HTTP 500 (Internal Server Error)
dès que je décommente la ligne :
$db = new PDO("pgsql:dbname=$dbname;host=$host", $username, $password );

Pourtant cette ligne a été utilisée est et correcte (les variables
$dbname, , $password sont correctement attribuées) AVANT que je
reconstruite tout mon système Xubuntu.

mon script info.php me donne bien :
Additional .ini files parsed /etc/php5/apache2/conf.d/curl.ini,
/etc/php5/apache2/conf.d/pdo.ini,
/etc/php5/apache2/conf.d/pdo_pgsql.ini,
/etc/php5/apache2/conf.d/pgsql.ini, /etc/php5/apache2/conf.d/xsl.ini

PDO

PDO support enabled
PDO drivers pgsql

pdo_pgsql

PDO Driver for PostgreSQL enabled
PostgreSQL(libpq) Version 9.1.5
Module version 1.0.2
Revision $Id: pdo_pgsql.c 321634 2012-01-01 13:15:04Z felipe $

pgsql

PostgreSQL Support enabled
PostgreSQL(libpq) Version 9.1.5
Multibyte character support enabled
SSL support enabled
Active Persistent Links 0
Active Links 0

Directive Local Value Master Value
pgsql.allow_persistent On On
pgsql.auto_reset_persistent Off Off
pgsql.ignore_notice Off Off
pgsql.log_notice Off Off
pgsql.max_links Unlimited Unlimited
pgsql.max_persistent Unlimited Unlimited


d'autre part si je liste les erreurs reportées par mon php.ini j'obtiens :
error_reporting = E_ERROR & E_WARNING & E_PARSE & E_NOTICE &
E_CORE_ERROR & E_CORE_WARNING & E_COMPILE_ERROR & E_COMPILE_WARNING &
E_USER_ERROR & E_USER_WARNING & E_USER_NOTICE & E_RECOVERABLE_ERROR &
E_USER_DEPRECATED ;

en utilisant la function "FriendlyErrorType($type)" comme indiqué à la
page :
<http://www.php.net/manual/fr/errorfunc.constants.php>

si bien que je comprends pas l'erreur 500 et j'ai bien du mal à débugger.

bon, par ailleurs, j'ai testé en CLI la base considérée, une base de test :
yt@D620 /home/yt $ psql yt_tests
psql (9.1.5)
Type "help" for help.

yt_tests=> select * from weather;
city | temp_lo | temp_hi | prcp | date
++++
San Francisco | 46 | 50 | 0.25 | 1994-11-27
Hayward | 37 | 54 | | 1994-11-29
San Francisco | 43 | 57 | 0 | 1994-11-29
(3 rows)

yt_tests=> q
yt@D620 /home/yt $


donc, comment faire pour avancer ???
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #24779722
Bonjour,

Le 13/09/2012 15:37, Une Bévue a écrit :
dans un script php j'ai cette erreur :
Erreur HTTP 500 (Internal Server Error)
dès que je décommente la ligne :
$db = new PDO("pgsql:dbname=$dbname;host=$host", $username, $password );



Que donne ce script en ligne de commande (si c'est possible) ?
Une Bévue
Le #24779762
Le 13/09/2012 15:59, Olivier Miakinen a écrit :
Bonjour,

Le 13/09/2012 15:37, Une Bévue a écrit :
dans un script php j'ai cette erreur :
Erreur HTTP 500 (Internal Server Error)
dès que je décommente la ligne :
$db = new PDO("pgsql:dbname=$dbname;host=$host", $username, $password );



Que donne ce script en ligne de commande (si c'est possible) ?




/home/yt/Sites/yt_tests $ php index.php
PHP Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[08006] [7] ' in /home/yt/Sites/yt_tests/index.php:74
Stack trace:
#0 /home/yt/Sites/yt_tests/index.php(74):
PDO->__construct('pgsql:dbname=yt...', 'yt', 'yvon5533')
#1 {main}
thrown in /home/yt/Sites/yt_tests/index.php on line 74
zsh: exit 255 php index.php
/home/yt/Sites/yt_tests $


entre temps j'ai ajouté le port ainsi :
$port="5432";
$db = new PDO("pgsql:dbname=$dbname;host=$host;port=$port",
$username, $password );


en revenant à ce que j'avais écrit précédemment (ie. sans le port) j'ai
exactement la même chose.

bon, la ligne 74 citée dans le message d'erreur est la ligne :
$db = new PDO("pgsql:dbname=$dbname;host=$host;", $username, $password );

j'ai vérifié qu'en CLI par :
$ psql -h <server IP> -U yt -d yt_tests

avec <server IP> = localhost, 127.0.0.1, 192.168.0.35 (lan local), son
IPV6 ça roule.

par contre je me suis rendu compte que pour me connecter à un server
distant en IPV6 il fallait ajouter -p 5432 pour que ça roule, sinon psql
cherche à se connecter au server distant par le port 5433 (?).

je dois dire que la syntaxe :
$db = new PDO("pgsql:dbname=$dbname;host=$host;", $username, $password );
indiquée à la page
par un utilisateur qui affirme que :
The DSN syntax shown here did not work for me, but this did:

<?php
$dbh = new PDO("pgsql:dbname=$dbname;host=$host", $username, $password );
?>

As opposed to

<?php
$dbh = new PDO('pgsql:dbname=$dbname;
host=$host;
username=$username;
password=$password');
?>

donc j'essaie, avant de poster, la "syntaxe DSN" :
db = new
PDO("pgsql:dbname=$dbname;host=$host;username=$username;password=$password;");

là le message d'erreur est différent, en CLI :
/home/yt/Sites/yt_tests $ php index.php
PHP Fatal error: Uncaught exception 'PDOException' with message
'SQLSTATE[08006] [7] invalid connection option "username"' in
/home/yt/Sites/yt_tests/index.php:76
Stack trace:
#0 /home/yt/Sites/yt_tests/index.php(76):
PDO->__construct('pgsql:dbname=yt...')
#1 {main}
thrown in /home/yt/Sites/yt_tests/index.php on line 76
zsh: exit 255 php index.php
/home/yt/Sites/yt_tests $
Une Bévue
Le #24782552
Le 13/09/2012 15:59, Olivier Miakinen a écrit :
Que donne ce script en ligne de commande (si c'est possible) ?


Bon, j'ai fait un autre test :
je change la variable :
$host="localhost";

pour l'adresse IPV6 d'un autre ordi, où la même base et approx la mêm
config existent :
$host="<IPV6 de l'ordi distant>";


et là ça roule "as expected"...

Le problème se trouve vraisemblablement entre PDO et psql...
Publicité
Poster une réponse
Anonyme