Доброго времени суток!
И так. Есть файлик 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
Ошибки одинаковые, а коды у них разные. И на страницу выводит код первой ошибки. Это беда печаль.
Хотелось бы чтобы в файл записывалась лишь одна строка ошибки, с одним единственным кодом.
Ранее записанные ошибки не должны удаляться.
Как это сделать, дайте пожалуйста совет, а то ума не хватает.