Каков параметр конфигурации PHP, который позволяет или предотвращает экранирование строк в отладочном выходе?
На двух разных установках (ноутбук-разработчик с поддержкой MAMP / OSX и dev-сервер, работающий с 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 as
[30-Jul-2009 11:34:00] Array ( [0] => 1 [1] => 2 [2] => 4 )
Я предпочитаю способ MAMP для отладки (помимо переноса файлов журналов в каталог / Applications).
Благодаря!
Крис, вы должны иметь возможность изменить директиву error_log в php.ini на Debian, чтобы указать на файл. Если это не определено, оно будет проходить через syslog, который не поддерживает несколько строк.
Детали:
Функция error_log
Директива error_log
Проблема возникает, когда процесс 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 файла ошибок).