Журнал ошибок PHP и символы новой строки - PullRequest
16 голосов
/ 30 июля 2009

Какой параметр конфигурации PHP разрешает или запрещает экранирование строк новой строки в отладочном выводе?

На двух разных установках (на ноутбуке с MAMP / OSX и на сервере с Debian) в журналах ошибок при отладке отображаются разные результаты.

error_log(print_r(array(1,2,4),1));

В Debian это выглядит в /var/log/apache2/error.log как

[Thu Jul 30 11:32:34 2009] [error] [client 118.93.246.104] Array\n(\n    [0] => 1\n    [1] => 2\n    [2] => 4\n)\n, referer: http://dev.example.org/

В OSX это отображается в / Applications / MAMP / logs / php_error_log как

[30-Jul-2009 11:34:00] Array
(
    [0] => 1
    [1] => 2
    [2] => 4
)

Я предпочитаю способ отладки MAMP (кроме перемещения файлов журналов в каталог / Applications).

Спасибо!

Ответы [ 3 ]

14 голосов
/ 30 июля 2009

Крис, у вас должна быть возможность изменить директиву error_log в вашем php.ini в Debian, чтобы она указывала на файл. Если это не определено, он будет проходить через системный журнал, который не поддерживает несколько строк.

Детали:

error_log функция

error_log директива

2 голосов
/ 10 мая 2012

Проблема возникает, когда процесс Apache не может записать в файл error_log, поэтому системный журнал записывает в файл. Системный журнал портит разрывы строк.

Так что просто сделайте:

chmod 777 error.log

Это должно решить вашу проблему.

0 голосов
/ 15 марта 2012

Я придумал хорошее решение для этого и только написал об этом в блоге, может быть полезным для людей: http://www.drcoen.com/2012/05/php-error_log-and-newlines-a-solution/. TL; DR: записать в файл, который вы создаете сами, в / tmp, написать функцию, которая записывает вашу отладочную информацию в этот файл и направить туда журналы Apache (так что вам не нужно отслеживать 2 файла ошибок).

...