2009-10-15 6 views
2

Я установил несколько vhosts под apache2/mod_perl. Я использовал директиву ErrorLog, чтобы получить отдельный журнал ошибок для каждого vhost. Это срабатывало только тогда, когда я использовал Apache2 :: Log. «warn» будет регистрироваться только в журнале регулярных ошибок.Почему мой выход Apache2 :: Log заменяет новые строки n?

Так что это все работает. В заключение. Но остается одна проблема: когда я регистрируюсь через $ r-> log_error, я считаю, что новые строки заменены на \n

Любая идея, почему это происходит, и как это можно исправить?

Спасибо.

+2

Вы уверены, что вы не помещая их в одинарные кавычки? '' Привет \ n'' vs '" Привет \ n "' –

ответ

8

Это не проблема mod_perl, а Apache. Видимо, есть некоторые проблемы безопасности с печатью неэкранированного выхода на журналы ошибок (я не совсем уверен, почему), поэтому вы должны явно включить это в Apache при сборке/настройке его с помощью этого:

CFLAGS=-DAP_UNSAFE_ERROR_LOG_UNESCAPED ./configure 

Если вы» используя уже установленный apache, вы не можете сделать это, чтобы изменить это.

+0

Отличное знание, спасибо! – aidan

0

Если у вас есть готовая установка, вы можете использовать эту строку кода для исправления проблемы, но она должна быть включена в каждое исполнение страницы в вашем vhost, скажем, в файле header.php или config.php.

ini_set('error_log','/var/log/apache2/error.log'); 
+0

Это не очень умно, для журнала ошибок. Если это исключено по ошибке ... – itsbruce

0

я знаю, что это очень старая нить, но все-таки иду сверху на результатах Google, так просто, чтобы помочь всем, следующие изменения в mod_perl.pl же помогли мне:

комментария ниже:

BEGIN { *CORE::GLOBAL::warn = \&Apache2::ServerRec::warn; } 

выше для: Сделать предупреждение пойти в журнал виртуального хоста, а не главный лог сервера.

я надеюсь, что это помогает кто-то там, как я :)

 Смежные вопросы

  • Нет связанных вопросов^_^