в ваш конфигурационный файл apache и перезапустите сервер apache. Это показывает подробности ошибки.

учаю 500 внутренних ошибок сервера, когда я пытаюсь сделать HTTP POST на определенный адрес в моем приложении. Я просмотрел журналы сервера в каталоге пользовательских журналов, указанном в файле виртуальных хостов, но там не отображается ошибка, поэтому отладка - это боль в заднице.

Как заставить Apache регистрировать внутренние 500 ошибок в журнале ошибок?

 Tom Hundt08 июл. 2016 г., 20:29
По нашему мнению, он отправлял их в журнал доступа (возможно, потому что, с точки зрения Apache, он работал правильно и просто передавал их из более глубокого уровня - в нашем случае, Passenger / Rails). Просто поместите эту заметку на случай, если кто-то почесает голову.
 user48447407 авг. 2011 г., 21:57
У меня была та же проблема с использованием PHP с виртуальными хостами .... без ошибок (Apache2, Ubuntu). Закончилось отсутствием модулей PHP (mysql, json и т. Д.)

Ответы на вопрос(9)

и это было из-за неправильной конфигурации mod_authnz_ldap в моем файле .htaccess. Абсолютно ничего не регистрировалось, но я продолжал получать ошибку 500.

Если вы столкнулись с этой конкретной проблемой, вы можете изменить уровень журнала mod_authnz_ldap следующим образом:

LogLevel warn authnz_ldap_module:debug

Это будет использовать уровень журнала отладки для mod_authnz_ldap, но предупредить для всего остального (https://httpd.apache.org/docs/2.4/en/mod/core.html#loglevel).

 bmaupin23 мар. 2018 г., 17:32
Хорошее наблюдение. Я добавил инструкции для регистрации этих ошибок.
 jww22 дек. 2017 г., 01:09
Вопрос был в том,«Как заставить Apache регистрировать внутренние 500 ошибок в журнале ошибок?» Вероятно, это должен быть комментарий.

о заметил это уже после того, как я сдался. Решил поделиться открытием) Теперь я знаю, где найти 500 ошибок.

 Eugene Lycenok19 февр. 2018 г., 00:31
Я использую Magento (CMS - Система управления контентом) для Apache. На моей странице произошла ошибка 500 с использованием основных классов Magento. Я не мог найти, где я мог видеть сообщение об ошибке. Согласно некоторым ответам здесь я попытался найти в логах apache / etc / httpd / logs / error_log. Но там ничего не было. Позже я узнал, что в моем httpd.conf есть строка для этого конкретного веб-хоста, определяющая путь журнала: <VirtualHost. ... ErrorLog / usr / www / log / error_log Так что мне нужно было посмотреть на более конкретный журнал хоста, а не на общий журнал apache.
 Yahya Hussein16 февр. 2018 г., 07:02
Можете ли вы добавить более подробную информацию в своем ответе

что версия php, которую вы используете, соответствует вашей кодовой базе. Например, ваша локальная среда может работать под управлением php 5.4 (и все работает нормально), и, возможно, вы тестируете свой код на новой машине, на которой установлен php 5.3. Если вы используете синтаксис 5.4, такой как [] для array (), вы получите ситуацию, описанную выше.

 jww22 дек. 2017 г., 01:09
Вопрос был в том,«Как заставить Apache регистрировать внутренние 500 ошибок в журнале ошибок?» Вероятно, это должен быть комментарий.
Решение Вопроса

в отличие от журналов ошибок сценариев, обычно содержит (более) конкретную ошибку. часто это будет отказ в разрешении или даже переводчик, который не может быть найден.

Это означает, что ошибка почти всегда лежит в вашем сценарии. Например, вы загрузили скрипт Perl, но не дали ему разрешения на выполнение? или, возможно, он был поврежден в среде Linux, если вы напишите сценарий в Windows, а затем загрузите его на сервер без преобразования концов строк, вы получите эту ошибку.

в Perl, если вы забудете

print "content-type: text/html\r\n\r\n";

вы получите эту ошибку

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

часто находится в/var/log/httpd/error_log или же/var/log/apache2/error.log.

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

Предполагается Linux и не обязательно Perl

 wcolbert19 янв. 2011 г., 09:02
Вы правы, это оказалось проблемой с PHP-скриптом. Библиотека PEAR не была установлена. Я установил его на свой VPS, и все хорошо. Спасибо всем!
 wcolbert19 янв. 2011 г., 07:14
Я проверил сервер ErrorLog, и там ничего не найдено.
 mivk18 нояб. 2016 г., 21:15
С PHP у меня ничего не было в настроенных логах ошибок apache, но я нашел ошибки сgrep PHP /var/log/syslog, Наверное потому что у меня былоerror_log = syslog в/etc/php5/apache2/php.ini.
 Álvaro González22 авг. 2015 г., 21:20
Как «пожалуйста, проверьте журналы» быть принятым ответом на «почему мои журналы пусты»?
 DeveloperChris02 мар. 2016 г., 01:03
Я указал пользователю журналы ошибок по умолчанию, а не пользовательские журналы ошибок. Часто, когда по какой-либо причине происходит сбой скрипта, ошибка направляется в журналы ошибок по умолчанию

Почему 500 внутренних ошибок сервера не регистрируются в ваших журналах ошибок apache?

Ошибки, которые вызывают вашу 500 внутреннюю ошибку сервера, происходят из модуля PHP. По умолчанию PHP НЕ регистрирует эти ошибки. Причина в том, что вы хотите, чтобы веб-запросы выполнялись как можно быстрее, и это опасно для безопасности - регистрировать ошибки на экране, где злоумышленники могут их наблюдать.

Эти инструкции для включения внутренней регистрации ошибок сервера предназначены дляUbuntu 12.10 с участиемPHP 5.3.10 а такжеApache/2.2.22.

Убедитесь, что логирование PHP включено:

Найдите свой файл php.ini:

[email protected]:~$ locate php.ini
/etc/php5/apache2/php.ini

Отредактируйте этот файл как root:

sudo vi /etc/php5/apache2/php.ini

Найдите эту строку в php.ini:

display_errors = Off

Измените приведенную выше строку следующим образом:

display_errors = On

Ниже в файле вы увидите это:

;display_startup_errors
;   Default Value: Off
;   Development Value: On
;   Production Value: Off

;error_reporting
;   Default Value: E_ALL & ~E_NOTICE
;   Development Value: E_ALL | E_STRICT
;   Production Value: E_ALL & ~E_DEPRECATED

Точки с запятой являются комментариями, это означает, что строки не вступают в силу. Измените эти строки, чтобы они выглядели так:

display_startup_errors = On
;   Default Value: Off
;   Development Value: On
;   Production Value: Off

error_reporting = E_ALL
;   Default Value: E_ALL & ~E_NOTICE
;   Development Value: E_ALL | E_STRICT
;   Production Value: E_ALL & ~E_DEPRECATED

В PHP это говорит о том, что мы хотим регистрировать все эти ошибки. Внимание, это приведет к значительному снижению производительности, поэтому вы не хотите, чтобы это включалось на производстве, поскольку ведение журнала требует работы, а работа требует времени, время стоит денег.

Перезапуск PHP и Apache должен применить изменения.

Сделайте то, что вы сделали, чтобы снова вызвать 500 Internal Server error, и проверьте журнал:

vi /var/log/apache2/error.log

Вы должны увидеть ошибку 500 в конце, примерно так:

[Wed Dec 11 01:00:40 2013] [error] [client 192.168.11.11] PHP Fatal error:  
Call to undefined function Foobar\\byob\\penguin\\alert() in /yourproject/
your_src/symfony/Controller/FuckedUpController.php on line 249, referer: 
https://nuclearreactor.com/abouttoblowup
 David30 окт. 2014 г., 07:37
Это должен быть канонический ответ на этот вопрос.
 DeveloperChris07 июн. 2016 г., 07:53
«Ошибки, которые вызывают вашу 500 Internal Server Error, происходят из модуля PHP. По умолчанию PHP НЕ регистрирует эти ошибки». Кто упомянул PHP? Отключение ведения журнала на сервере 500 в PHP является предположением и чаще всего ошибочным. Apache регистрирует ошибки сервера 500 от неисправного модуля (в данном случае php), но чаще всего он попадает в /var/log/apache2/error.log (предполагается, что debian или аналогичный)
 daVe16 авг. 2014 г., 10:11
display_errors печатает ошибки наэкран. log_errors пишет ошибки вжурнальный файл.
 Álvaro González22 авг. 2015 г., 21:21
@WanLiqun Это довольно хорошая информация, но она применима только к PHP, который даже не упоминается в этом вопросе.
 luqo3325 янв. 2019 г., 11:38
Этот ответ начинается с плохого совета выкидывать ошибки на экран.

HttpProtocolOptions Unsafe в ваш конфигурационный файл apache и перезапустите сервер apache. Это показывает подробности ошибки.

который может быть отдельным файлом от вашего журнала ошибок apache.

Найдите это, перейдя вphpinfo() и проверьте атрибут error_log. Если это не установлено. Установить его:https://stackoverflow.com/a/12835262/445131

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

 jww22 дек. 2017 г., 01:10
Вопрос был в том,«Как заставить Apache регистрировать внутренние 500 ошибок в журнале ошибок?» Вероятно, это должен быть комментарий.

Внутренняя Ошибка Сервера информация не отображается в лог-файлах, вам, вероятно, нужноперезапустите сервис Apache.

Я обнаружил, что Apache 2.4 (по крайней мере на платформе Windows), как правило, упорно не промывать лог-файлы, вместо этого, вошли данные остаются в памяти на некоторое время. Это хорошая идея с точки зрения производительности, но она может сбивать с толку при разработке.

 Adelmar01 дек. 2015 г., 23:09
Это был правильный ответ для меня в Linux. Даже после удаления исходного файла error.log (который представлял собой файл символьного устройства) и замены его на touch-log 777 с сенсорным экраном, Apache не будет писать в него, пока его не перезапустят.

перейдите во все каталоги из корневого каталога «/» или «c: \» в каталог вашего файла и проверьте, не содержат ли они файлы «.htaccess».

Однажды я оставил файл в «c: \», и ​​он показал самые странные результаты.

 jww22 дек. 2017 г., 00:33
Вопрос был в том,«Как заставить Apache регистрировать внутренние 500 ошибок в журнале ошибок?»

Ваш ответ на вопрос