#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);