我写了这样的PHP代码
$site="http://www.google.com";
$content = file_get_content($site);
echo $content;
但是当我从$site中删除“http://”时,我得到以下警告:
警告: file_get_contents (www.google.com) (函数。file-get-contents]:失败 打开水流:
我试过,试过,但没成功。
我写了这样的PHP代码
$site="http://www.google.com";
$content = file_get_content($site);
echo $content;
但是当我从$site中删除“http://”时,我得到以下警告:
警告: file_get_contents (www.google.com) (函数。file-get-contents]:失败 打开水流:
我试过,试过,但没成功。
当前回答
最简单的方法是在file_get_contents前面加上@, 即:
$content = @file_get_contents($site);
其他回答
你可以在前面加上@: $content = @file_get_contents($site);
这将抑制任何警告-谨慎使用!参见错误控制操作符
编辑:当你删除“http://'”时,你不再寻找一个网页,而是在你的磁盘上一个名为“www.google.....”的文件。
第一步:检查返回代码:if($content === FALSE){//处理错误这里…}
第二步:通过在file_get_contents()调用前放置一个错误控制操作符(即@)来抑制警告: $content = @file_get_contents($site);
一种替代方法是抑制错误并抛出稍后可以捕获的异常。如果在代码中有多个对file_get_contents()的调用,这尤其有用,因为您不需要手动抑制和处理所有这些调用。相反,可以在一个try/catch块中对该函数进行多次调用。
// Returns the contents of a file
function file_contents($path) {
$str = @file_get_contents($path);
if ($str === FALSE) {
throw new Exception("Cannot access '$path' to read contents.");
} else {
return $str;
}
}
// Example
try {
file_contents("a");
file_contents("b");
file_contents("c");
} catch (Exception $e) {
// Deal with it.
echo "Error: " , $e->getMessage();
}
下面是我的处理方法:
$this->response_body = @file_get_contents($this->url, false, $context);
if ($this->response_body === false) {
$error = error_get_last();
$error = explode(': ', $error['message']);
$error = trim($error[2]) . PHP_EOL;
fprintf(STDERR, 'Error: '. $error);
die();
}
在使用file_get_contents()之前,应该使用file_exists()函数。 这样可以避免php警告。
$file = "path/to/file";
if(file_exists($file)){
$content = file_get_contents($file);
}