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


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

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

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

7 114

7 ответов:

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

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

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

стоит отметить, что если ваша ошибка происходит из-за .htaccess, например отсутствует rewrite_module, вы все равно увидите 500 внутренней ошибки сервера.

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

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

включение отображения ошибок в 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

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

постарайтесь не идти

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

но

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

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

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

display_errors

или

error_reporting

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

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

display_errors = on;

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

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

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