Почему мои выходные данные Apache2::Log заменяют символы новой строки на ?

StackOverflow https://stackoverflow.com/questions/1573912

Вопрос

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

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

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

Спасибо.

Это было полезно?

Решение

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

CFLAGS=-DAP_UNSAFE_ERROR_LOG_UNESCAPED ./configure

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

Другие советы

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

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

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

прокомментируйте ниже:

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

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

надеюсь, это поможет кому-то вроде меня :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top