Как я могу обработать предупреждение функции file_get_contents () в PHP? - PullRequest
279 голосов
/ 07 ноября 2008

Я написал такой код PHP

$site="http://www.google.com";
$content = file_get_content($site);
echo $content;

Но когда я удаляю "http://" из $site, я получаю следующее предупреждение:

Внимание: file_get_contents (www.google.com) [function.file-get-contents]: не удалось открыть поток:

Я пытался try и catch, но это не сработало.

Ответы [ 18 ]

1 голос
/ 18 июля 2014

Поскольку в PHP 4 используется error_reporting () :

$site="http://www.google.com";
$old_error_reporting = error_reporting(E_ALL ^ E_WARNING);
$content = file_get_content($site);
error_reporting($old_error_reporting);
if ($content === FALSE) {
    echo "Error getting '$site'";
} else {
    echo $content;
}
1 голос
/ 27 февраля 2012

Вы можете использовать этот скрипт

$url = @file_get_contents("http://www.itreb.info");
if ($url) {
    // if url is true execute this 
    echo $url;
} else {
    // if not exceute this 
    echo "connection error";
}
0 голосов
/ 23 апреля 2019

как то так:

public function get($curl,$options){
    $context = stream_context_create($options);
    $file = @file_get_contents($curl, false, $context);
    $str1=$str2=$status=null;
    sscanf($http_response_header[0] ,'%s %d %s', $str1,$status, $str2);
    if($status==200)
        return $file        
    else 
        throw new \Exception($http_response_header[0]);
}
0 голосов
/ 14 декабря 2016
try {
   $site="http://www.google.com";
   $content = file_get_content($site);
   echo $content;
} catch (ErrorException $e) {
    // fix the url

}

set_error_handler(function ($errorNumber, $errorText, $errorFile,$errorLine ) 
{
    throw new ErrorException($errorText, 0, $errorNumber, $errorFile, $errorLine);
});
0 голосов
/ 03 октября 2016

Вы должны использовать функцию file_exists (), прежде чем использовать file_get_contents (). Таким образом вы избежите предупреждения php.

$file = "path/to/file";

if(file_exists($file)){
  $content = file_get_contents($file);
}
0 голосов
/ 28 июля 2016

Это попытается получить данные, если это не сработает, оно поймает ошибку и позволит вам сделать все, что вам нужно в рамках перехвата.

try {
    $content = file_get_contents($site);
} catch(\Exception $e) {
    return 'The file was not found';
}
0 голосов
/ 16 марта 2016

Вы также должны установить

allow_url_use = On 

в вашем php.ini чтобы прекратить получать предупреждения.

0 голосов
/ 13 ноября 2015

Изменить файл php.ini

allow_url_fopen = On

allow_url_include = On
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...