При отладке какого-либо скрипта часто возникает необходимость прослеживать по логам состояние/значение переменных, вхождение в блоки условий и т.д. Есть множество различных способов ведения логов и их дальнейшего разбора. Я бы хотел рассмотреть в этом посте логирование с отправкой информации на почтовый ящик. Это удобно для дебага, когда применить нормальные средства отладки не удается. Итак что нам нужно:
1) Работающая функция mail на стороне сервера.
Если не работает – идем сюда /etc/php5/apache2/php.ini и ищем параметр sendmail_path
прописываем в него следующее:
sendmail_path = "/usr/sbin/sendmail -t -i"
Да, можно настроить и свой крутой почтовый сервер, но нам пока этого не нужно.
проверим:
<?php mail('somewhere@somemail.com', 'hi', 'your mail works');
Дальше можно накидать свою функцию, которая будет логировать все что мы ее подадим в качестве параметра, что типа:
function mylog( $data ) { $dumpData = "\n"; $dumpData .= "<pre>"; $dumpData .= print_r($data, 1); $dumpData .= "</pre>"; $dumpData .= "<br/><br/><br/>\n\n\n"; $dumpData .= print_r(debug_backtrace(), 1); mail( MAIL_TO, DEBUG, $dumpData ); }
2) Удобный почтовый клиент, который позволит фильтровать полученные логи.
Мне лично для этих целей очень нравится thunderbird, в котором можно удобно настроить автоматические фильтры и повесить на них различные события.
Еще раз повторюсь я за отладку с использованием спец программ для отладки, но порой бывает приходится прибегать и к таким методам.