it-swarm.com.ru

Как я могу сделать PHP отобразить ошибку вместо того, чтобы дать мне 500 Internal Server Error

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

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

124
Rob

Проверьте настройки 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');

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

185
awgy

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

16
dtbarne

Используйте «php -l <filename>» (это «L») из командной строки, чтобы вывести синтаксическую ошибку, которая может привести к тому, что PHP выдает ошибку status 500. Это выведет что-то вроде:

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

10
Aaron

Старайся не идти 

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

но 

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

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

3
von verletzt

Включение отображения ошибок из кода 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
Hao Nguyen

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

display_errors

или же

error_reporting

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

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

display_errors = on;

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

2
Max

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

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

0
WoodrowShigeru