Как я могу заставить PHP отображать ошибку вместо того, чтобы выдавать мне 500 внутренних ошибок сервера [дубликат]
На этот вопрос уже есть ответ здесь:
- Белый экран смерти PHP 15 ответов
Такого раньше никогда не случалось. Обычно он отображает ошибку, но теперь он просто выдает мне 500 внутренних ошибок сервера. Конечно, раньше, когда он показывал ошибку, это были разные серверы. Теперь я на новом сервере (у меня есть полный root, так что если Мне нужно настроить его где-нибудь в php.ini, я могу.) Или, может быть, это что-то с Apache?
Я мирился с этим, просто перенося файл на другой сервер и запуская его там, чтобы найти ошибку, но это стало слишком утомительным. Есть ли способ исправить это?
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');
После этого перезапустите сервер.
Стоит отметить, что если ваша ошибка связана с .htaccess, например, с отсутствующим модулем перезаписи_модуля, вы все равно увидите 500 внутренних ошибок сервера.
Используйте "php -l " (это "L") из командной строки для вывода синтаксической ошибки, которая может привести к тому, что PHP выдаст ошибку статуса 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.ini... оказалось, что там было diplay_errors = off; примерно на 100 строк ниже моего
display_errors = on;
Так что помните, что последнее имеет значение!
Если все остальное не удается, попробуйте переместить (т. Е. в bash) Все файлы и каталоги "подальше" и добавить их обратно один за другим.
Я только что узнал, что мой файл .htaccess ссылается на несуществующий файл .htpasswd. (#глупый)