Например:
Файл php.ini
... ; Запишите ошибки в указанный файл. error_log = c: /php/php.log ...
Файл журнала ошибок (c: /php/php.log) содержит каждую запись в этом формате:
[12-Jun-2011 12:58:55] PHP Примечание: неопределенная переменная: test в C: \ www \ phpinfo.php в строке 2 \ r \ r \ n [12-Jun-2011 12:59:01] PHP Примечание: неопределенная переменная: test в C: \ www \ phpinfo.php в строке 2 \ r \ r \ n [12-Jun-2011 13:01:12] Замечание PHP: неопределенная переменная: test в C: \ www \ phpinfo.php в строке 2 \ r \ r \ n [12-Jun-2011 13:02:11] PHP Примечание: неопределенная переменная: test в C: \ www \ phpinfo.php в строке 2 \ r \ r \ n [12-Jun-2011 13:11:23] PHP Примечание: неопределенная переменная: test в C: \ www \ phpinfo.php в строке 2 \ r \ r \ n [12-Jun-2011 13:12:10] PHP Примечание: неопределенная переменная: test в C: \ www \ phpinfo.php в строке 2 \ r \ r \ n
Два символа возврата каретки и одна новая строка на одну строку ошибок.
Почему так происходит? Как изменить файл журнала ошибок на формат по умолчанию:
[12-Jun-2011 12:58:55] PHP Примечание: неопределенная переменная: test в C: \ www \ phpinfo.php в строке 2 \ r \ n [12-Jun-2011 12:59:01] PHP Примечание: неопределенная переменная: test в C: \ www \ phpinfo.php в строке 2 \ r \ n [12-Jun-2011 13:01:12] Замечание PHP: неопределенная переменная: test в C: \ www \ phpinfo.php в строке 2 \ r \ n [12-Jun-2011 13:02:11] PHP Примечание: неопределенная переменная: test в C: \ www \ phpinfo.php в строке 2 \ r \ n [12-Jun-2011 13:11:23] PHP Примечание: неопределенная переменная: test в C: \ www \ phpinfo.php в строке 2 \ r \ n [12-Jun-2011 13:12:10] Замечание PHP: неопределенная переменная: test в C: \ www \ phpinfo.php в строке 2 \ r \ n
Версия PHP 5.3.6
Apache / 2.2.15 (Win32)
Протестировано на Windows 7 Home Basic и Windows XP SP3, те же результаты.
Файл php.ini содержит только две строки
log_errors = On error_log = c: /server/php.log
скрипт apache phpinfo () -> http://pastehtml.com/view/awvx1vgpp.html
PS.
sever: nginx 1.0.4
FastCGI + PHP версия 5.3.6
Все работает так, как ожидалось.
скрипт nginx phpinfo () -> http://pastehtml.com/view/awvwvk9p9.html
Существует больше директив ini для управления выходом в журнале ошибок. Если это не непонимание конца строки (см. Мой комментарий), то вы можете захотеть посмотреть в ini-настройках error_prepend_string
и error_append_string
. Эти две и более связанные настройки описаны на этой странице руководства PHP .
По умолчанию PHP работает, не загружая ini и только включив установку и регистрацию error_log
, он выводит только одну строку. Вы можете проверить это и на своей системе:
php -n -d error_log=./error.log -d log_errors=1 -r 'error;'
Используйте эту команду, чтобы сделать изолированный прогон и сравнить его с вашим выходом. Если он имеет два конца строки, то это, вероятно, ошибка вашей версии php.
Если нет, то в вашем приложении некоторые параметры будут изменены. Вам нужно выяснить, какая настройка. Вероятно, вы можете найти его, зарегистрировав собственный обработчик ошибок и затем наложив настройки ini.