Подтвердить что ты не робот

Вывод строки PHP error_log прерывается как буквальные "\n" строки на Mac OSX

Я работаю над кодом, который использует error_log() для отладки. Проблема в том, что по какой-то причине все разрывы строк на выходе появляются как буквальные строки \n, поэтому нет реального разрыва строки (что делает невозможным понимание сложных массивов).
Я попытался использовать как var_export, так и print_r с помощью функции error_log, и оба привели к одному и тому же результату: блок текста с \n, разбросанный по всему. Я даже попытался сделать str_replace \n до PHP_EOL без успеха. Что я делаю неправильно?

Чтобы уточнить: строки \n отображаются в средстве просмотра журнала ошибок Console, TextEdit и терминале.

ИЗМЕНИТЬ

Просто хочу отметить заранее, что да, я знаю, что вам нужно дважды указывать строки \n, чтобы они отображались как разрывы строк. Тем не менее, я имею дело с выводами из print_r или var_export (для проверки массива), поэтому это не помогает мне (я думаю?).

4b9b3361

Ответ 1

По-видимому, эта проблема не зависит от вашей операционной системы. См. Этот вопрос: Журнал ошибок PHP и символы новой строки

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

Ответ 2

В качестве альтернативы вы можете обработать/заменить '\n' с помощью sed, чтобы они отображались как новые строки в консоли:

Linux

$ tail -f error_log | sed "s/\\\n/\\n/g"

Mac OS X

# WARNING - don't just copy+paste (see comment below)
$ tail -f error_log | sed "s/\\\n/^M^L/g"

Примечание. В Mac OS X конец строки - CRLF (перевод строки каретки), когда в системе LINUX - только LF (перевод строки)

Примечание 2: В Mac OS X для вывода ^M в Терминале нажмите Control+V Control+M, для вывода ^L нажмите Control+V Control+L