php возвращает 500 ошибок, но без журнала ошибок


У меня возникла проблема, когда у меня есть php-приложение, которое возвращает внутреннюю ошибку сервера (500), однако в журнале ошибок ничего не отображается.

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

Я создал тестовый скрипт с ошибками в той же конфигурации vhost, и эти ошибки показывают все в порядке, так что все, кажется, настроено правильно, насколько это возможно для php/apache. Существуют ли определенные ошибки php, которые отображаются в журнале ошибок (php настроен для отображения любого типа уведомлений, предупреждений, ошибок, фатальных ошибок и т. Д.)?

Это работает на ubunut 10.04 со стандартным apache и php из репозитория ubuntu с apt-get.

Author: Charles, 2011-08-22

9 answers

Сканируйте исходные файлы, чтобы найти @.

С сайта документации php

В настоящее время префикс оператора управления ошибками "@" даже отключает отчеты об ошибках для критических ошибок, которые завершат сценарий исполнение. Помимо прочего, это означает, что если вы используете "@" для подавления ошибок определенной функции и либо она недоступна или был напечатан неправильно, сценарий умрет прямо там, без указания причины.

 48
Author: Luc M, 2012-07-14 19:10:44

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

Вы можете начать отладку сценария, определив, где он выходит из сценария (начните с добавления echo 1; exit; в первую строку сценария и проверки, выводит ли браузер 1, а затем переместите эту строку вниз).

 6
Author: akirk, 2011-08-22 14:35:02

В прошлом у меня не было журналов ошибок в двух случаях:

  1. Пользователь, под которым работал Apache, не имел прав на изменение файла php_error_log.
  2. Ошибка 500 произошла из-за неправильной конфигурации .htaccess, например, неправильных настроек модуля перезаписи. В этой ситуации ошибки регистрируются в файле Apache error_log.
 5
Author: sgnsajgon, 2013-06-13 15:48:28

Скопируйте и вставьте следующее в новый файл .htaccess и поместите его в корневую папку вашего веб-сайта:

php_flag  display_errors                  on
php_flag  display_startup_errors          on

Ошибки будут отображаться непосредственно на вашей странице.

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

 4
Author: Meloman, 2017-10-12 13:44:52

Для проектов Symfony обязательно проверьте файлы в приложении/журналах проекта

Более подробная информация доступна в этом посте :
Как отладить ошибку 500 в Symfony 2

Кстати, другие фреймворки или CMS разделяют такое поведение.

 3
Author: Balmipour, 2017-05-23 12:18:17

Вот еще одна причина, по которой ошибки могут быть не видны:

У меня была та же проблема. В моем случае я скопировал исходный код из производственной среды. Следовательно, переменная ENVIRONMENT, определенная в index.php, была установлена в 'production'. Это привело к тому, что error_reporting было установлено в 0 (без регистрации). Просто установите для него значение 'development', и вы должны начать видеть сообщения об ошибках в журнале apache.

Оказалось, что 500 было вызвано отсутствием точки с запятой в конфигурации базы данных:-)

 2
Author: Aswin Kumar, 2013-12-19 07:28:32

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

Моя проблема заключалась в том, что в ЗАВИТКЕ, который я установил curl_setopt($CR, CURLOPT_FAILONERROR, true);

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

 1
Author: eric.itzhak, 2014-03-09 10:01:44

Вам необходимо включить журнал ошибок PHP.

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

Если вы посмотрите в журнале ошибок PHP, вы должны найти свое решение.

Смотрите здесь, в документе, как включить его в php.ini

 0
Author: Neal, 2011-08-22 14:32:56

Убедитесь, что у вас правильные права доступа к файлам. Если у apache нет разрешения на чтение файла, то он не может записывать данные в журнал.

 0
Author: Johnny Ruin, 2017-02-06 17:35:27