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

Форум PHP

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

 

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

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

тема: Строка с ошибкой
 
 автор: valenok   (27.06.2006 в 11:11)   письмо автору
 
 

Чтото не нашёл как посредством пхп
узнать в какой строке произошла ошибка.
Тоесть если была ошибка генерируется переменная $php_errormsg
Только в ней сам текст ошибки, а ещё нужно чтоб было сказано в какой строке призошла ошибка.
Чёт я не нашёл подходящей функции.

   
 
 автор: cheops   (27.06.2006 в 12:10)   письмо автору
 
   для: valenok   (27.06.2006 в 11:11)
 

Для этого предназначена предопределённая константа __LINE__

   
 
 автор: valenok   (28.06.2006 в 00:54)   письмо автору
 
   для: cheops   (27.06.2006 в 12:10)
 

Здорово. Я очень рад что она существует.
Но она по крайней мере - сейчас, мне не нужна. (Или я ей не научился пользоваться.)

<?
echo $a;
// Undefined variable a in script on line 2
//
//
#
#
#
#
#
echo $prp_errormsg." on line ".__LINE__;
// Undefined variable a in script on line 22

Вы же не предлагает порверять на наличие ошибок после каждой строчки кода..


Мне нужна строка в которой произошла ошибка.

   
 
 автор: ЯR   (28.06.2006 в 02:21)   письмо автору
 
   для: valenok   (28.06.2006 в 00:54)
 

Как я понял, тут надо использовать функцию set_error_handler();
Она устанавливает пользовательскую функцию для обработки ошибок.
Синтаксис:


string set_error_handler(string $error_handler[, int $error_types])

$error_handler - имя функции
$errr_types - типы ошибок (по умолчанию - все)


функция должна принимать 5 параметров и возвращать булевовское значение.

пример:

<?php
/* функция set_error_handler не может обрабатывать следующие ошибки (т.к. они слишком серьёзные): E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE */
set_error_handler('my_error_handler');
function 
my_error_handler($errorcode$errorstring$filename$lineno, &$vars) {
    print 
"Ошибка ($errorcode$errorstring  в файле $filename на строке $lineno.<br>
    Значения переменных:<br>
    <pre>"
;
    
print_r($vars);
    print 
'</pre>';
    return 
true;
}
?>

   
 
 автор: valenok   (28.06.2006 в 08:49)   письмо автору
 
   для: ЯR   (28.06.2006 в 02:21)
 

Спасибо.
<?php 
// set the error reporting level for this script
error_reporting(E_USER_ERROR E_USER_WARNING E_NOTICE);

// error handler function
function myErrorHandler($errno$errstr$errfile$errline)
{
  switch (
$errno) {
  case 
E_USER_ERROR:
   echo 
"<b>My ERROR</b> [$errno$errstr<br />\n";
   echo 
"  Fatal error in line $errline of file $errfile";
   echo 
", PHP " PHP_VERSION " (" PHP_OS ")<br />\n";
   echo 
"Aborting...<br />\n";
   exit(
1);
   break;
  case 
E_USER_WARNING:
   echo 
"<b>My WARNING</b> [$errno$errstr<br />\n";
   break;
  case 
E_USER_NOTICE:
   echo 
"<b>My NOTICE</b> [$errno$errstr<br />\n";
   break;
  default:
   echo 
"Unkown error type: [$errno$errstr<br />\n";
   break;
  }
}


// set to the user defined error handler
$old_error_handler set_error_handler("myErrorHandler");

function 
sss($var){echo $sdasd;}
sss(1);
?>


Всё равно не вернул мне строку с ошибкой.

   
Rambler's Top100
вверх

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