2009-11-25 6 views

ответ

3

file_get_contents не бросает исключение, но возвращает FALSE, если это не удается. file_get_contents - очень примитивная функция. Если вам нужна более продвинутая обратная связь, используйте cURL.

E.g. что-то вроде этого:

$curl = curl_init('your URL here'); 

// Return the output to a string instead of the screen with CURLOPT_RETURNTRANSFER 
curl_setopt($pCurl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($pCurl, CURLOPT_TIMEOUT, 10); 

$content = curl_exec($curl); 
$info = curl_getinfo($curl); 

if($info['http_code'] === 200) 
{ 
    return $content; 
} 
+0

, который объясняет alot :) – breez

2

Он возвращает FALSE при ошибке, он не бросает и исключение.

Таким образом, вы можете использовать @ для подавления предупреждения (если требуется) и проверьте результат, чтобы увидеть, если произошла ошибка

$content = @file_get_contents('http://www.example.com'); 
if ($content === FALSE){ 
    echo "Error!"; 
} 
0

PHP не использует исключения по умолчанию, но механизм сообщений об ошибках. Если вы хотите исключений, вы можете использовать собственный обработчик ошибок, например, в http://php.net/manual/en/class.errorexception.php

Чем больше PHP'ий был бы выключение сообщения об ошибке и проверка кода возврата. Выключение можно выполнить глобально на error_reporting(0); или ini_set('display_errors', false); или с помощью оператора @.

<?php 
if ([email protected]_get_contents(....)) { 
    echo "ERROR"; 
} 
?> 
+1

Принудительные сообщения об ошибках никогда не помогали ничему улучшить жизнь. Это не путь. Если вы достигнете точки, в которой вы должны отлаживать этот код, вы ударяете себя по голове, когда поймете, что выбрасываете действительную отладочную информацию. – TheGrandWazoo

+0

Ошибки глобального подавления - очень плохая идея, но подавление ошибок с помощью '@' в отдельном заявлении здесь, а иногда может быть самым простым решением - даже тогда имейте в виду, что даже подавленные ошибки неэффективны: обработчик ошибок всегда, или даже при подавлении ошибки. С другой стороны, подавление ошибок во всем, что приводит к более чем одной строке исполняемого PHP (например, 'include' или вызов определенной пользователем функции), является, безусловно, хорошим способом отладки ад. –

+0

, так что лучше всего было бы оставить отчет об ошибках при разработке поворота их во всем мире, когда код будет готов? – breez

Смежные вопросы