Журнал ошибок PHP и символы новой строки

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

В двух разных установках (ноутбук для ноутбука, работающий с MAMP/OSX, и dev-сервер, на котором запущен debian), я вижу разные результаты в журналах ошибок при отладке.

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

В Debian это отображается в /var/log/apache 2/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 ).

Спасибо!

Ответы

Ответ 1

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

Подробности:

error_log

error_log

Ответ 2

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

Так просто:

chmod 777 error.log

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

Ответ 3

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