feof()期望参数1为资源

我收到成千上万个如下所示的错误日志:

$xml = "< requisicao-boleto> < website> < n_website> {$n_website}< /n_website> < password> {$password}< /password> < /website> < sacado> < name> {$name}< /name> {$user_code} < address> < street> {$street}< /street> < complement> {$complement}< /complement> < number> {$number}< /number> < district> {$district}< /district> < state_province> {$state_province}< /state_province> < city> {$city}< /city> < postcode> {$postcode}< /postcode> < country> {$country}< /country> < /address> < /sacado> < dados_boleto> < product> {$product}< /product> < reference> {$uid}< /reference> < value> {$value}< /value> < /dados_boleto> < /requisicao-boleto> "; $xml = preg_replace('/\s(?=\s)/', '', $xml); $xml = "xml=" . $xml; $n = strlen($xml); $opts = array( 'http' => array( 'method' => "POST", 'header' => "User-Agent: My Own Http Client\r\n" . "Content-length: " . $n . "\r\n", 'content' => $xml ) ); $context = stream_context_create($opts); $handle = fopen($URL, 'r', false, $context); $conteudo = ''; while (!feof($handle)) { $conteudo .= fread($handle, 1024); }

代码是:
while (!feof($handle)) { $conteudo .= fread($handle, 1024); }

有没有人遇到过类似的问题, 并且知道如何克服这个问题?
在尝试实施已经给出的建议时, 我已经用完整的代码更新了这个问题。
#1你检查过fopen是否有效吗?
$handle = fopen($URL, 'r', false, $context); if ( $handle === FALSE ) { echo 'Cannot open this url ' . $URL; exit; }

#2查看fopen文档
成功返回文件指针资源, 错误返回FALSE。
【feof()期望参数1为资源】我认为在你的情况下, fopen返回false, feof也返回false。这就是为什么你会陷入无限循环。
以下是feof文档的报价
如果文件指针位于EOF或发生错误(包括套接字超时), 则返回TRUE。否则返回FALSE。
你的示例如下所示
php > var_dump(feof(false)); PHP Warning:feof() expects parameter 1 to be resource, boolean given in php shell code on line 1 PHP Stack trace: PHP1. {main}() php shell code:0 PHP2. feof() php shell code:1 bool(false) php >

在执行其他任何操作之前, 你需要检查$ handle是否是资源。

    推荐阅读