2011-12-20 2 views
1

Я новичок в PHP, и у меня аналогичная проблема, к тому, что обрабатывается:Обработка ошибок в simple_html_dom.php

Good error handling with file_get_contents

В simple_html_dom.php, есть функция называется load_file, что:

function load_file() { 
    $args = func_get_args(); 
    $this->load(call_user_func_array('file_get_contents', $args), true); 
    } 

В моем PHP скрипт, я использую эту функцию:

$ html-> load_file ($ ссылка);

При попытке загрузить неработающую ссылку, я получаю предупреждение о моем выходе дисплея, как:

Warning: file_get_contents (http://www.yurowdesigns.com/UkraineSIG/test.asp) [function.file-получить содержание]: не удалось открыть поток: HTTP запрос не выполнен! HTTP/1.1 404 Не найдено в /home/yurow/wwwroot/yurowdesigns.com/programs/simple_html_dom.php в строке 568

Я хотел бы перенаправить это и подобные сообщения об ошибке в файл error.log на моем а не на моем выходе.

я наивно пытался адаптировать ответ, данный в

Good error handling with file_get_contents

к моей проблеме, добавив функциональные fget_contents() в моей копии simple_html_dom.php.

function fget_contents() { 
$args = func_get_args(); 
// the @ can be removed if you lower error_reporting level 
$contents = @call_user_func_array('file_get_contents', $args); 

if ($contents === false) { 
    throw new Exception('Failed to open ' . $file); 
} else { 
    return $contents; 
} 
} 

И изменяемая строка 568 в load_file следующим образом:

$ this-> нагрузки (call_user_func_array ('fget_contents', $ арг), правда);

Но теперь, когда я бегу мой PHP скрипт, я получаю новое сообщение об ошибке:

Предупреждение: call_user_func_array() ожидает параметр 1, чтобы быть действительным обратного вызова, функция «fget_contents» не найден или недопустимое имя функции в /home/yurow/wwwroot/yurowdesigns.com/programs/simple_html_dom.php на линии 568

это означает, что simple_html_dom.php не признает функцию «fget_contents»

Где я ошибся? Как я могу это исправить?

ответ

0

Для этого в ваших файлах PHP установите их, чтобы они не отображали ошибки. Используйте ini_set('display_errors','1'); и затем войти свои ошибки с помощью error_log или, надеюсь, ваш php.ini по умолчанию конфигурации уже регистрирует ошибки с помощью error_log string

+0

Индранил: Пожалуйста, см. Мой ответ на Гаурава Вашиштху. – user1107199

1

Используйте следующий код:

function load_file() { 
    try{ 
     $args = func_get_args(); 
     $this->load(call_user_func_array('file_get_contents', $args), true); 
    } catch(Exception e) { 
     print_r(e); 
    } 
} 

Здесь, как вы видите, что есть попытаться поймать блок, будет обрабатывать ошибки.

+1

Спасибо, Гаурав. Я попробую ваше решение, но я нашел другой ответ. Оказывается, функция fget_contents() отлично работает, но я поставил ее в неправильном месте в скрипте simple_html_dom.php. Он принадлежит в разделе «вспомогательные функции» скрипта, а не в разделе «class simple_html_dom {». – user1107199