Сообщение об ошибках «На лету» в PHP

#php

#php

Вопрос:

Когда наш сайт находился на хостинге IIS с установленным PHP, для отчетов об ошибках было установлено значение E_NONE, и я смог временно включить его, используя:

 ini_set('display_errors', 1);
  

Похоже, что теперь, когда мы находимся на хостинге Linux / Apache, эта команда больше не работает. Я пытался намеренно отправлять неправильные команды на сервер, и я не получаю сообщений об ошибках.

Что я делаю не так? Есть ли какой-либо другой способ временно включить отчеты об ошибках без необходимости каждый раз редактировать php.ini?

Комментарии:

1. ИМХО, такого рода вещи лучше всего устанавливать на весь сервер (dev или prod) в вашем файле php.ini. Мне действительно нравится, когда люди отображают ошибку, связанную с конкретным файлом, это просто создает беспорядок.

2. Если я делаю это на сервере, то это отображается на всем сайте. Добавляя его на страницу, он отображается только на этой странице.

3. Вот полный список php.net/manual/fr/function.error-reporting.php

Ответ №1:

Вы можете изменить отчеты об ошибках на E_ALL , используя следующую строку:

 error_reporting(E_ALL);
  

Попробуйте добавить это в файл.

Ответ №2:

Лучший способ включить все ошибки — это:

 error_reporting( -1 );
  

Это лучше, чем E_ALL, поскольку E_ALL на самом деле не означает всех ошибок во всех версиях PHP (это происходит только в самой последней). -1 — это единственный способ убедиться, что он включен во всех случаях.

Комментарии:

1. Обновление: Начиная с версии PHP 5.4, E_STRICT теперь включен в E_ALL, который теперь охватывает все классы ошибок. На мой взгляд, E_ALL обычно лучше, чем -1. Это дает будущим версиям PHP возможность вводить экспериментальные новые классы ошибок и не запускать для них скрипты на основе E_ALL до будущей версии (как с E_STRICT в PHP 5.x — 5.3).

Ответ №3:

Мне просто нужно было сделать это в одном из моих скриптов. Предупреждения DOMDocument уничтожали мои журналы. Итак, вот что вы делаете:

 // First, grab a copy of the current error_reporting level
// while setting the new level, I set it to zero because I wanted
// it off - but you could easily turn it on here
$erlevel = error_reporting(0);
// Then, do stuff that generates errors/warnings
// Finally, set the reporting level to it's previous value
error_reporting($erlevel);