Здравствуйте, Андрей.
> А как перенаправить поток сообщений об ошибках в файл, например,
> errors.log?
Файл для вывода сообщений об ошибках назначается опцией
error_log="filename"
в конфигурационном файле php.ini. По умолчанию этот параметр закомментирован.
Запись ошибок в лог ошибок сервера включается/выключается опцией
log_errors = On|Off
По умолчанию эта опция включена и ошибки php пишутся в общий лог ошибок http-сервера.
Если вам нужно, чтобы при этом сообщения об ошибках не выводились в браузер,
то установите в настройках php опцию
display_errors = Off
Если у вас нет доступа к файлу php.ini, но есть возможность использовать файлы
.htaccess, то эти опции можно установить в файле
.htaccess, который следует поместить в DOCUMENT_ROOT вашего сайта:
# каждая опция занимает одну строку, то есть
# ниже идут
#две опции -- две строки
php_value error_log "filename"
php_flag display_errors off
Подробнее см. в руководстве главу, посвященную конфигурированию php.
Если в этом случае сервер выдает ошибку 500, то, скорее всего, ваш php не является
модулем сервера (апача). В этом случае вам
нужно согласовать с вашим хостером размещение файла php.ini с настройками для
вашего сайта. Вы можете столкнуться с этой ситуацией
отлаживая, скажем, скрипт под Windows, тогда как на сервере хостера такая ошибка
возникать не будет.
Если вы хотите изменить обработку ошибок внутри скрипта, то вам следует изучить
функции:
error_reporting(),
set_error_handler(),
restore_error_handler(),(),
error_log(),()
А лучше всего прочитать раздел в руководстве, посвященный обработке ошибок. Там
есть пример пользовательского обработчика ошибок,
пишущего информацию об ошибках в нужный файл.
Успехов. Анатолий.