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.