diff --git a/htdocs/lib/functions.inc.php b/htdocs/lib/functions.inc.php index 16725e00025..74ae33cf54f 100644 --- a/htdocs/lib/functions.inc.php +++ b/htdocs/lib/functions.inc.php @@ -561,37 +561,65 @@ function accessforbidden() } /*! - \brief Affiche message erreur system avec toutes les informations pour faciliter le diagnostique et la remontée des bugs - On doit appeler cette fonction quand une erreur technique bloquante est rencontrée + \brief Affiche message erreur system avec toutes les informations pour faciliter le diagnostique et la remontée des bugs. + On doit appeler cette fonction quand une erreur technique bloquante est rencontrée. + Toutefois, il faut essayer de ne l'appeler qu'au sein de page php, les classes devant + renvoyer leur erreur par l'intermédiaire de leur propriété "error". */ function dolibarr_print_error($db='',$msg='') { global $langs; - - print "Dolibarr a détecté une erreur technique.
\n"; - print "Voici les informations qui pourront aider au diagnostique:

\n"; - - print "Serveur: ".$_SERVER["SERVER_SOFTWARE"]."
\n";; - print "URL sollicitée: ".$_SERVER["REQUEST_URI"]."
\n";; - print "QUERY_STRING: ".$_SERVER["QUERY_STRING"]."
\n";; - print "Referer: ".$_SERVER["HTTP_REFERER"]."
\n";; + $syslog = ''; - $syslog="url=".$_SERVER["REQUEST_URI"]; - $syslog.=", query_string=".$_SERVER["QUERY_STRING"]; + if ($_SERVER['DOCUMENT_ROOT']) { + // Mode web + print "Dolibarr a détecté une erreur technique.
\n"; + print "Voici les informations qui pourront aider au diagnostique:

\n"; + + print "Serveur: ".$_SERVER["SERVER_SOFTWARE"]."
\n";; + print "URL sollicitée: ".$_SERVER["REQUEST_URI"]."
\n";; + print "QUERY_STRING: ".$_SERVER["QUERY_STRING"]."
\n";; + print "Referer: ".$_SERVER["HTTP_REFERER"]."
\n";; + $syslog.="url=".$_SERVER["REQUEST_URI"]; + $syslog.=", query_string=".$_SERVER["QUERY_STRING"]; + } + else { + // Mode CLI + print "Erreur interne détectée...\n"; + $syslog.="pid=".getmypid(); + } if ($db) { - print "
\n"; - print "Requete dernier acces en base: ".$db->lastquery()."
\n"; - print "Code retour dernier acces en base: ".$db->errno()."
\n"; - print "Information sur le dernier accès en base: ".$db->error()."
\n"; - $syslog=", sql=".$db->lastquery(); - $syslog=", db_error=".$db->error(); + if ($_SERVER['DOCUMENT_ROOT']) { + // Mode web + print "
\n"; + print "Requete dernier acces en base: ".$db->lastquery()."
\n"; + print "Code retour dernier acces en base: ".$db->errno()."
\n"; + print "Information sur le dernier accès en base: ".$db->error()."
\n"; + } + else { + // Mode CLI + print "Requete dernier acces en base:\n".$db->lastquery()."\n"; + print "Code retour dernier acces en base:\n".$db->errno()."\n"; + print "Information sur le dernier accès en base:\n".$db->error()."\n"; + + } + $syslog.=", sql=".$db->lastquery(); + $syslog.=", db_error=".$db->error(); } + if ($msg) { - print "Message: ".$msg."
\n" ; - $syslog=", msg=".$msg; + if ($_SERVER['DOCUMENT_ROOT']) { + // Mode web + print "Message: ".$msg."
\n" ; + } else { + // Mode CLI + print "Message:\n".$msg."\n" ; + } + $syslog.=", msg=".$msg; } + dolibarr_syslog("Error $syslog"); /* Commentée voir mail dans la Mailing liste.