| |||||
Отладка скриптовКак сделать собственный обработчик ошибок?@ – атавизм. Для отладки PHP, версий ниже 5, действительно лучше использовать error_reporting и перехватывать стандартный обработчик ошибок PHP. Пример – кусок из моей библиотеки:
<?
А собственный вывод сообщений об ошибках и отладочной информации сделать не echo(), print(), а через trigger_error(). Подробности об использовании собственного обработчика есть в документации.
Начиная же с пятой версии, на помощь приходит Как подавить сообщения при ошибках?Указание @ перед функцией блокирует вывод сообщения об ошибке. Если track_errors включен, то последнее сообщение об ошибке сохраняется в глобальной переменной $php_errormsg Ошибки синтаксисаОшибки данного типа говорят о том, что автор скрипта, вероятнее всего, где-то опечатался. В общем виде выглядят примерно так: Parse error: parse error описание ошибки in локальный путь к скрипту с ошибкой on line номер строки с ошибкой Возможен и сокращённый вариант: Parse error: parse error in локальный путь к скрипту с ошибкой on line номер строки с ошибкой Основные проблемы при устранении таких ошибок сводятся к двум: Найти строку, на которую указывает интерпретатор (для пользователей Блокнота, или любого редактора, который при автопереносе заменяет настоящий номер строки). Найти строку, в которой РЕАЛЬНО произошла ошибка. Обычно это либо заявленная в сообщении строка, либо одна из строк, лежащих выше.
Например, следующий код:
<?
Ещё хуже дело обстоит с пропуском фигурных скобок. Дело в том, что с точки зрения PHP запись for ($i==0; $i<10; $i++)
<?
Десять раз печатаем echo «I="; Выполняем КОД Печатаем echo $i; А это ещё что за } ?! А ведь КОД может иметь не один десяток строк... И совсем отдельная песня – кавычки. Во-первых, кавычку можно пропустить:
<? Скрипт вызовет ошибку только в восьмой строке, хотя пропустили кавычку вы в первой. Во-вторых, кавычки можно перепутать, поскольку их в РНР два вида: " и ' :
<? echo "Переменные:';Скрипт опять вызовет ошибку только в восьмой строке, хотя вы и закрыли кавычку, правда, не ту, что открыли. Ну и, наконец, можно напечатать что-то вроде:
<? А вот правильные варианты:
<?
Вот, вроде, и всё. Напоследок несколько советов: Используйте редакторы с подсветкой – незакрытые кавычки они вам продемонстрируют. Все циклы, операторы выбора и т.п. оформляйте «лесенкой», это позволит быстро найти пропущенную скобку. Будьте бдительны :)
Много комментариев (2).
[Показать комментарии/форму]
| |||||