Можно ли сделать так, чтобы ошибки PHP выглядели лучше? Можно ли выводить трассировку стека в отдельных строках?

#formatting #php

#форматирование #php

Вопрос:

Прямо сейчас PHP просто выводит что-то вроде этого на странице:

Фатальная ошибка: не удается повторно объявить CmsgetItemHierarchy() (ранее объявленный в /home/cartman/Development/cmsdev/engineer_1.0/Cms/Menu.php:62) в /home/cartman/Development/cmsdev/engine_1.0/Cms/Menu.php на строке 62 Стек вызовов: 0,0001 634424 1. {main}() /главная/картман/Разработка/cmsdev/public_normal/index.php:0 0,0037 757768 2. Bootstrap::run() /home/cartman/Development/cmsdev/public_normal/index.php:7 0,0037 757768 3. Cms Front->dispatch() /home/cartman/Development/cmsdev/data_production/bootstrap.php:94 0,0043 781512 4. frontendController->contactusAction()/home/cartman/Development/cmsdev/engineer_1.0/Cms/Front.php:367 0,0051 817152 5. plugins m3nu api->renderMenu($configName = ‘bottom’, $ActiveItem = ‘contactme’) /home/cartman/Development/cmsdev/data_production/контроллеры /frontendController.php:43 0,0052 825392 6. Cms Menu->generateMenu() /home/cartman/Development/cmsdev/public_normal/plugins/m3nu/api.php:29 0,0052 825392 7. Cms Menu->prepareseconfig() /home/cartman/Development/cmsdev/engineer_1.0/Cms/Menu.php:121

Есть ли способ сделать вывод более организованным, по крайней мере, распечатать трассировку стека в отдельных строках?

Ответ №1:

Вы также можете обновить php.ini, чтобы включить некоторое форматирование HTML.

 html_errors = On
error_prepend_string = "<pre style='color: #333; font-face:monospace; font-size:8pt;'>"
error_append_string = "</pre>"
  

Или, если вы предпочитаете устанавливать их во время выполнения, включите следующее в начало вашего скрипта (ов)

 ini_set("html_errors", "1"); 
ini_set("error_prepend_string", "<pre style='color: #333; font-face:monospace; font-size:8pt;'>"); 
ini_set("error_append_string ", "</pre>"); 
  

Ответ №2:

Похоже, это трассировка стека XDebug. Попробуйте установить trace_format в php.ini :

 xdebug.trace_format = 2 # HTML formatting
  

Комментарии:

1. Да. Я установил для него значение 2, но вывод все еще находится в одной строке.

2. О, мне пришлось также установить html_errors=On в php.ini, чтобы xdebug использовал хорошее оранжевое форматирование. Работает для меня.

Ответ №3:

Если вы просматриваете их из браузера, вы можете обернуть это в

<pre></pre>

теги, которые по существу будут представлять ваши символы новой строки как разрывы строк.

В противном случае, если вы просматриваете вне DOM, то есть в консоли или в программе просмотра исходного кода, вы обнаружите, что они уже отформатированы «красиво»

Комментарии:

1. Есть ли какая-то директива php.ini, которая позволяет мне переносить вывод erorr?

2. Вы можете просто варп <?php ?> теги <pre></pre> теги