diff --git a/ecrire/public.php b/ecrire/public.php index 1be36db8bc57d53b1e9fd71c7f10815193cb8f8d..560b6e7b9aba669456ef4182bf3fd38f2475502e 100644 --- a/ecrire/public.php +++ b/ecrire/public.php @@ -149,7 +149,14 @@ if (isset($GLOBALS['_INC_PUBLIC']) AND $GLOBALS['_INC_PUBLIC']) { include _ROOT_RESTREINT."public/evaluer_page.php"; envoyer_entetes($page['entetes']); if ($res === false) { - $msg = array('zbug_erreur_execution_page'); + include_spip('inc/autoriser'); + $err = _T('zbug_erreur_execution_page'); + if (autoriser('webmestre')) { + $err .= "\n<hr />\n" + .highlight_string($page['codephp'],true) + ."\n<hr />\n"; + } + $msg = array($err); erreur_squelette($msg); } diff --git a/ecrire/public/evaluer_page.php b/ecrire/public/evaluer_page.php index 85f56110975ccd168cadc12d08291c906f6cf317..775df1807e3bae80b2c1db176835c27ac7600bb3 100644 --- a/ecrire/public/evaluer_page.php +++ b/ecrire/public/evaluer_page.php @@ -53,9 +53,19 @@ if ($page['process_ins'] != 'html') { $page['texte'] = str_replace('<'.'?xml', "<\1?xml", $page['texte']); $res = eval('?' . '>' . $page['texte']); - $page['texte'] = ob_get_contents(); + $eval = ob_get_contents(); ob_end_clean(); + // erreur d'exécution ? + // enregistrer le code pour afficher zbug_erreur_execution_page + if (false === $res) { + $page['codephp'] = $page['texte']; + $page['texte'] = '<!-- erreur -->'; + } + else { + $page['texte'] = $eval; + } + $page['process_ins'] = 'html'; if (strpos($page['texte'],'?xml')!==false)