20

Как вывести ошибки PHP на экран?

13

У меня возникла проблема с отображением ошибок на PHP. Я проверил свой файл конфигурации PHP (php.ini) и убедился, что display_errors включен, а уровень отчета об ошибках установлен на E_ALL. Я также перезапустил веб-сервер Apache.

Я даже добавил следующие строки в начало своего скрипта, но это не помогает - они не ловят даже простые синтаксические ошибки. Например, я объявляю переменные с помощью символа "$" и не закрываю команды с помощью ";". В результате все мои скрипты показывают пустую страницу при возникновении таких ошибок, но я хочу, чтобы фактически были видны ошибки в выводе браузера.

Вот код, который я добавил в начало моего скрипта:

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

Что еще можно сделать?

5 ответ(ов)

1

В файле php.ini установите следующее значение:

display_errors = On

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

1

Чтобы отображать все ошибки, вам нужно сделать следующее:

1. Включить эти строки в PHP-скрипте, который вы вызываете из браузера (обычно это index.php):

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

2.(a) Убедитесь, что в этом скрипте нет синтаксических ошибок

—или—

2.(b) Установите display_errors = On в вашем файле php.ini

В противном случае скрипт не сможет выполнить эти 2 строки!

Вы можете проверить наличие синтаксических ошибок в вашем скрипте, выполнив (в командной строке):

php -l index.php

Если вы включаете скрипт из другого PHP-скрипта, то он будет отображать синтаксические ошибки во включаемом скрипте. Например:

index.php

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

// Любые синтаксические ошибки здесь приведут к пустому экрану в браузере

include 'my_script.php';

my_script.php

adjfkj // Эта синтаксическая ошибка будет отображена в браузере
0

Некоторые провайдеры веб-хостинга позволяют изменять параметры PHP в файле .htaccess.

Вы можете добавить следующую строку:

php_value display_errors 1

У меня была такая же проблема, как у вас, и это решение помогло.

0

Предупреждение: нижеприведенный ответ содержит фактические ошибки. Ничего не изменилось в обработке ошибок; необработанные исключения по-прежнему отображаются так же, как и другие ошибки. Предложенный подход следует использовать с осторожностью, так как он выводит ошибки без условий, независимо от настройки display_errors, и может представлять угрозу, раскрывая конфиденциальную информацию внешним пользователям на рабочем сайте.

Вы можете заметить, что все настройки для «отчета об ошибках» или «отображения ошибок» могут не работать в PHP 7. Это связано с тем, что обработка ошибок изменилась. Попробуйте следующее:

try {
    // Ваш код
} 
catch (Error $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' в '.$e->getFile().' на строке '.$e->getLine().' вызвано из '.$trace[0]['file'].' на строке '.$trace[0]['line'];
}

Или, чтобы поймать исключения и ошибки одновременно (это не является обратимо совместимым с PHP 5):

try {
    // Ваш код
} 
catch (Throwable $e) {
    $trace = $e->getTrace();
    echo $e->getMessage().' в '.$e->getFile().' на строке '.$e->getLine().' вызвано из '.$trace[0]['file'].' на строке '.$trace[0]['line'];
}
0

Да, это сработает. Используя следующий код:

<?php
     error_reporting(E_ALL);
     ini_set('display_errors', 1);    
?>

вы включаете вывод всех ошибок и предупреждений в вашем PHP-скрипте. error_reporting(E_ALL) устанавливает уровень отчетности так, чтобы все ошибки, предупреждения и уведомления отображались. Команда ini_set('display_errors', 1) обеспечивает отображение этих ошибок на экране. Это полезно для отладки во время разработки, но не рекомендуется использовать это в продуктивной среде, так как это может раскрыть конфиденциальную информацию о вашем приложении.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь