Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как лучше перехватить ошибки, подавить вывод в интерфейс
 
 автор: Valleri   (29.12.2011 в 16:56)   письмо автору
 
 

Как лучше перехватить ошибки, подавить вывод в интерфейс и записать в свой лог журнал.

  Ответить  
 
 автор: сотка   (29.12.2011 в 17:07)   письмо автору
 
   для: Valleri   (29.12.2011 в 16:56)
 

Файл application/config/config.php настроить таким образом
/** 
  0 = отключает логирование 
  1 = записывает только сообщения с ошибками 
  2 = добавляются отладочные сообщения 
  3 = добавляются информационные сообщения 
  4 = добавляются все оообщения 
**/ 
$config['log_threshold'] = 1; 
 
/** 
  По умолчанию логи сохраняются в папку system/logs/ 
  Либо, указывается свой путь к папке для лог-файлов. 
  Необходимо проверить права доступа у папки на запись 
**/ 
$config['log_path'] = '';


Файл application/config/database.php

/** 
  TRUE - ошибки базы данных отображаются 
  FALSE - ошибки базы данных не отображаются 
**/ 
$db['default']['db_debug'] = FALSE;

если правильно вас понял

  Ответить  
 
 автор: Valleri   (29.12.2011 в 17:16)   письмо автору
 
   для: сотка   (29.12.2011 в 17:07)
 

Вы наверное про какую-то базу или движок или...
Я о настройке PHP, что-бы не показывать ошибки пользователям, а записывать их в файл

[поправлено модератором]

  Ответить  
 
 автор: cheops   (29.12.2011 в 17:17)   письмо автору
 
   для: Valleri   (29.12.2011 в 17:16)
 

А в чем выражается "не работа"? И где дело происходит (локальная машина, хостинг)?

  Ответить  
 
 автор: Valleri   (29.12.2011 в 17:26)   письмо автору
 
   для: cheops   (29.12.2011 в 17:17)
 

В данный момент локально под Денвером.
Я затер этот скрипт, стал разбираться вhttp://www.php.net/manual/ru/book.errorfunc.php
<?php
print_r
(error_get_last());
?>

Вот в этом эксперименте, показывает какие-то замечания.
А в логе
 WebServers\usr\local\apache\logs\error.log 
прописалась ошибка отсутствия файла ico?
[Thu Dec 29 16:45:44 2011] [error] [client 127.0.0.1] File does not exist: Z:/home/wr_board.ru/www/favicon.ico

Вот я и хочу её воспроизвести.

  Ответить  
 
 автор: cheops   (29.12.2011 в 17:31)   письмо автору
 
   для: Valleri   (29.12.2011 в 17:26)
 

Это вам средствами Apache нужно отлавливать. Есть директивы, который позволяют повесить обработчики на HTTP-состояния, например,
ErrorDocument 404 /404.php

Возможно вас заинтересует статья по ссылке http://softtime.ru/article/index.php?id_article=25

Конкретно по выше-описанной ошибке, это браузер ищет иконку favicon.ico, которая выводится радом с адресом, подберите себя иконку, бросьте в корень сайта - ошибка исчезнет. Собственно, это даже не ошибка, а так... Apache просто фиксирует все обращения, к несуществующим файлам, обратитесь к любому другому файлу, которого у вас нет и Apache добросовестно запишет это обращение в журнал error.log.

  Ответить  
 
 автор: cheops   (29.12.2011 в 17:16)   письмо автору
 
   для: Valleri   (29.12.2011 в 16:56)
 

1. На прикладном уровне можно назначить свой собственный обработчик при помощи функции set_error_handler(), в своей собственной функцией хоть в файл, хоть в базу данных ошибки направляйте.
2. Если доступен php.ini, то следует отключить вывод ошибок и включить их журналирование.

  Ответить  
 
 автор: Valleri   (29.12.2011 в 17:20)   письмо автору
 
   для: cheops   (29.12.2011 в 17:16)
 

Я случайно заметил, что в файле error.log сервера Денвера \WebServers\usr\local\apache\logs\error.log
есть ошибки, которые не появляются никак ни в выводе в поток ни в других местах

  Ответить  
 
 автор: cheops   (29.12.2011 в 17:25)   письмо автору
 
   для: Valleri   (29.12.2011 в 17:20)
 

Ммм... погодите, это журнал Web-сервера, PHP об этих ошибках может совершенно не знать и средств у него может не быть для доступа к ним... вернее есть расширение, но оно помоему не стандартное. В общем это чужие ошибки, не PHP, а другой системы. Точно также PHP ничего не знает об ошибках на стороне MySQL, если вы явно их не запросите. Точно также, PHP не доступны сообщения об ошибках операционной системы - там отдельный лог, к нему только администратор имеет доступ. Т.е. по умолчанию PHP отображает и перехватывает только то, что в его компетенции - сильно поворошить систему придется, чтобы он отображал все (и это подорвет безопасность).

  Ответить  
 
 автор: Valleri   (29.12.2011 в 17:29)   письмо автору
 
   для: cheops   (29.12.2011 в 17:25)
 

Что-то стало проясняться, а то сбился и дальше стал путаться.
Как правильно?
1. ini_set('display_errors', 0)
2. set_error_handler('user_log');
Мне не понятен полный текст
Нужна ли установка ini_set('display_errors', 0) или достаточно set_error_handler('user_log');

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования