Я уже три дня пытаюсь включить отчеты об ошибках в PHP. Я получил некоторое время с помощью ini_set («отображать ошибки» 1); функционировать, пока я не попытался подключиться к БД; это не сработало. Теперь я включил error_reporting, display_startup_errors, log_errors без какого-либо влияния на отчеты об ошибках. Я изменил все пять конфигурационных файлов (ini разработки, ini разработки, файл (ы) php.ini, расположенный в php / 7.0 / cli, php / 7.0 / fpm, и даже тот, что в apache2 (даже если я запускаю nginx) )
Я начинаю сомневаться в своих силах, любая помощь очень ценится.
РЕДАКТИРОВАТЬ: я использовал функцию ini_set, описанную выше в моих файлах, и она работала, пока я не попытался подключиться к БД. Я подтвердил, что включил создание отчетов об ошибках для файла php.ini, описанного в пути к каталогу функции phpinfo (). Никакого эффекта вообще.
Поскольку никто не дал конкретного ответа, мне просто придется опубликовать его сам.
Я нашел журнал ошибок файл (который действительно регистрирует все ошибки на моем сервере Nginx) в этом каталоге: /var/log/nginx/error.log
Надеюсь, это может помочь и другим, использующим Nginx, но я все еще не понимаю, почему ошибки не отображаются в браузере. Я думаю, что природа Nginx состоит в том, чтобы все было довольно сложно.
Возможно, мне следует разработать Apache, а затем перенести его в Nginx, когда у меня будет больше опыта — только некоторые мысли для других, которые тоже занимаются этим.
Привет ребят! Просто хотел дать обновление по этому вопросу: начиная с обновления с PHP 7.0.2 <= 7.0.3, теперь я могу видеть ошибки, которые должны были отображаться.
РЕДАКТИРОВАТЬ: не удаляйте содержимое этого файла журнала, это повредит весь отчет об ошибках. Я вернулся ни к чему сейчас. —
ini_set('display_errors', 1);
или же display_errors
Просто позволяет PHP выводить ошибки — полезно для отладки, настоятельно рекомендуется отключить для производственных сред. Он часто содержит информацию, которую вы никогда не хотите, чтобы пользователи видели.
error_reporting(E_ALL);
или же error_reporting
Просто устанавливает точно который ошибки показаны.
Установка одного или другого не гарантирует, что ошибки будут отображаться. Вы необходимо установить оба, чтобы фактически видеть ошибки на вашем экране.
Что касается постоянной настройки в вашей конфигурации PHP, по умолчанию для error_reporting
является E_ALL & ~ E_NOTICE & ~ E_STRICT & ~ E_DEPRECATED. Тем не менее, эта переменная не должна быть изменена. Посмотреть здесь:
http://php.net/manual/en/errorfunc.configuration.php#ini.error-reporting
Что касается отображения ошибок, см. Здесь:
http://php.net/manual/en/errorfunc.configuration.php#ini.display-errors
Установите значение конфигурации «display_errors» на stderr
или же stdout
в зависимости от ваших потребностей.
Просто измените эти переменные внутри вашего php.ini
файл, и вы будете золотой. Убедитесь, что абсолютно уверены и то и другое display_errors
а также error_reporting
устанавливается на удовлетворительное значение. Просто настройка error_reporting
не будет гарантировать, что вы видите ошибки, которые вы ищете!
Если вы видите ошибки везде, вам нужно Кроме в соединении с базой данных вам просто нужно отловить ошибки. Если это PDO, сделайте что-то вроде этого:
try {
$this->DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$this->DBH->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$STH = $this->DBH->prepare("INSERT INTO `" . $this->table . "` ($fs) value ($ins) $up");
$STH->execute($data);
$id = $this->DBH->lastInsertId();
$this->closeDb();
return $id;
} catch(PDOException $e) {
echo $e->getMessage();
}
Просто фрагмент из моей структуры. Конечно, вам придется изменить его по своему вкусу, но вы должны быть в состоянии получить общее представление там. Они ключ это эта часть здесь:
try {
//DB Stuff
} catch(PDOException $e) {
echo $e->getMessage();
}
Если вы сделали оба из того, что я перечислил здесь, и все еще есть проблемы, ваша проблема не имеет ничего общего с включением отчетов об ошибках. Предоставленный код покажет вам ошибку с самим подключением к базе данных и внутри кода PHP. У вас должна быть совершенно другая проблема, если это не показало вам ошибку, которую вы преследуете.
Скорее всего, вам потребуется более подробное описание того, что вы преследуете, и того, что вы ожидаете увидеть.
Пытаться:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
возможно, это поможет вам. изменить значения параметров
в файле /etc/php/7.0/fpm/pool.d/www.conf (например, значение display_errors по умолчанию отключено)