Доброго времени суток!
И так. Есть файлик index.php
PHP:
скопировать код в буфер обмена
//отображение всех ошибок die('Closed or limited access to root directory'); } // подключаем конфигурационный файл include ('config.php'); // подключаем автозагрузчик include (SITE_PATH . DS . 'autoloader' . DS . 'autoloader.php'); // соединение с БД try { $db = new PDO(DB_TYPE.':host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS); $db->exec('SET CHARACTER SET utf8'); } catch(PDOException $e) { new Error_Gen(SITE_PATH, $e->getMessage()); }
И собственно файл с классом Error_Gen (error_gen.php)
PHP:
скопировать код в буфер обмена
class Error_Gen { function __construct($path, $message) { $this->random = $this->randomStr(8); // строка, которую будем записывать в файл $text = 'DATE: '.date('m.d.y H:i:s').' '; $text .= 'ERROR MESSAGE: '.$message.' '; $text .= 'ERROR CODE: '. $this->random.PHP_EOL; $fp = fopen($path."/error/ERROR_CODE.txt", "a"); die('Something went wrong. More detailed information in the file ERROR_CODE.txt<br />ERROR CODE: '.$this->random); } function randomStr($length) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $randomStr = ''; for ($i = 0; $i <= $length; $i++) { $randomStr .= $characters[mt_rand (0 , strlen ($characters) - 1 )]; } return $randomStr; } }
Пример:
Когда возникает ошибка с подключение к БД, на страницу выкидывается сообщение
"Something went wrong. More detailed information in the file ERROR_CODE.txt
ERROR CODE: m9pj5KDsm"
а в файл записываются 2-3 строки
DATE: 04.01.16 00:53:15 ERROR MESSAGE: could not find driver ERROR CODE: m9pj5KDsm
DATE: 04.01.16 00:53:15 ERROR MESSAGE: could not find driver ERROR CODE: dwD4PKw1W
DATE: 04.01.16 00:53:15 ERROR MESSAGE: could not find driver ERROR CODE: 8IZhEi9wZ
Ошибки одинаковые, а коды у них разные. И на страницу выводит код первой ошибки. Это беда печаль.
Хотелось бы чтобы в файл записывалась лишь одна строка ошибки, с одним единственным кодом.
Ранее записанные ошибки не должны удаляться.
Как это сделать, дайте пожалуйста совет, а то ума не хватает.
|