Ответ 1
Крис, вы должны иметь возможность изменить директиву error_log в php.ini на Debian, чтобы указать на файл. Если это undefined, он будет проходить через syslog, который не поддерживает несколько строк.
Подробности:
Какой параметр конфигурации 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 ).
Спасибо!
Крис, вы должны иметь возможность изменить директиву error_log в php.ini на Debian, чтобы указать на файл. Если это undefined, он будет проходить через syslog, который не поддерживает несколько строк.
Подробности:
Проблема возникает, когда процесс Apache не может записываться в файл error_log, поэтому вместо этого syslog записывает в файл. Syslog испортил разрывы строк.
Так просто:
chmod 777 error.log
Это должно решить вашу проблему.
Я придумал хорошее решение для этого и просто написал об этом блог, может быть полезно людям: http://www.drcoen.com/2012/05/php-error_log-and-newlines-a-solution/. TL: DR: напишите файл, который вы создаете в /tmp, напишите функцию, которая записывает вашу отладочную информацию в этот файл и маршрутизирует там также Apache (так что вам не нужно отслеживать 2 файла ошибок).