Как я могу заставить PHP отображать ошибку вместо того, чтобы выдавать мне 500 внутренних ошибок сервера [дубликат]


На этот вопрос уже есть ответ здесь:

Такого раньше никогда не случалось. Обычно он отображает ошибку, но теперь он просто выдает мне 500 внутренних ошибок сервера. Конечно, раньше, когда он показывал ошибку, это были разные серверы. Теперь я на новом сервере (у меня есть полный root, так что если Мне нужно настроить его где-нибудь в php.ini, я могу.) Или, может быть, это что-то с Apache?

Я мирился с этим, просто перенося файл на другой сервер и запуская его там, чтобы найти ошибку, но это стало слишком утомительным. Есть ли способ исправить это?

 114
Author: Rob, 2010-04-22

7 answers

Проверьте error_reporting, display_errors и display_startup_errors настройки в вашем файле php.ini. Они должны быть установлены в E_ALL и "On" соответственно (хотя вы не должны использовать display_errors на рабочем сервере, поэтому отключите это и используйте log_errors вместо этого, если/когда вы его развернете). Вы также можете изменить эти настройки (кроме display_startup_errors) в самом начале вашего скрипта, чтобы установить их во время выполнения (хотя вы можете не поймать все ошибки таким образом):

error_reporting(E_ALL);
ini_set('display_errors', 'On');

После этого перезапустите сервер.

 175
Author: awgy, 2013-01-07 15:01:43

Стоит отметить, что если ваша ошибка связана с .htaccess, например, с отсутствующим модулем перезаписи_модуля, вы все равно увидите 500 внутренних ошибок сервера.

 14
Author: dtbarne, 2015-03-04 21:18:27

Используйте "php -l " (это "L") из командной строки для вывода синтаксической ошибки, которая может привести к тому, что PHP выдаст ошибку статуса 500. Он выведет что-то вроде:

Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданный '}' в в строке 18

 10
Author: Aaron, 2016-05-25 03:53:34

Включение отображения ошибок из PHP-кода для меня не работает. В моем случае, используя NGINX и PHP-FMP, я отслеживаю файл журнала с помощью grep. Например, я знаю имя файла mycode.php вызывает ошибку 500, но не знает, в какой строке. С консоли я использую это:

/var/log/php-fpm# cat www-error.log | grep mycode.php

И у меня есть вывод:

[04-Apr-2016 06:58:27] PHP Parse error:  syntax error, unexpected ';' in /var/www/html/system/mycode.php on line 1458

Это помогает мне найти строку, в которой у меня есть опечатка.

 3
Author: Hao Nguyen, 2016-04-04 05:05:10

Постарайся не уходить

MAMP > conf > [your PHP version] > php.ini

Но

MAMP > bin > php > [your PHP version] > conf > php.ini

И измените его там, это сработало для меня...

 3
Author: von verletzt, 2017-11-18 20:44:01

Будьте осторожны, чтобы проверить, если

display_errors

Или

error_reporting

Активен (не является комментарием) где-то в другом месте ini-файла.

Мой сервер разработки отказался отображать ошибки после обновления до Kubuntu 16.04 - Я много раз проверял php.ini... оказалось, что там было diplay_errors = off; примерно на 100 строк ниже моего

display_errors = on;

Так что помните, что последнее имеет значение!

 2
Author: Max, 2016-09-09 15:17:03

Если все остальное не удается, попробуйте переместить (т. Е. в bash) Все файлы и каталоги "подальше" и добавить их обратно один за другим.

Я только что узнал, что мой файл .htaccess ссылается на несуществующий файл .htpasswd. (#глупый)

 0
Author: WoodrowShigeru, 2017-03-06 12:16:28