PHP:CURL库:获取curl_exec的状态

时间:2011-07-01 19:14:55

标签: php curl

我在PHP中使用cURL来编写一个函数来将远程xml文件放入我的本地文件夹中。一切正常,但我有一个问题:

  $fileIn = curl_init("http://some-remote-host.com/file.xml);
  $fileOut = fopen('myLocal.xml", "w");

  curl_setopt($fileIn, CURLOPT_FILE, $fileOut);
  curl_setopt($fileIn, CURLOPT_HEADER, 0);

  $isCopied = curl_exec($fileIn);
  curl_close($fileIn);
  fclose($fileOut);

  if(!$isCopied)
     return false;
  else
     //do something else

根据我读到的文档,当远程文件不存在时,$ isCopied应该为false,并且不应该有myLocal.xml,但我的if(!$isCopied)似乎不起作用。这是myLocal.xml的内容

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL something.xml was not found on this server.</p>
<hr>
<address>Apache Server at somehost.com Port 443</address>
</body></html>

我的问题是:如何获取一个布尔变量告诉我它什么时候成功,什么时候没有。 (表示远程文件不存在时)。

谢谢。

2 个答案:

答案 0 :(得分:3)

您可以使用

curl_getinfo($fileIn, CURLINFO_HTTP_CODE); 

查看返回的http代码(您正在寻找200)。

答案 1 :(得分:2)

试试这个:

  

$ isCopied = curl_getinfo($ fileIn,   CURLINFO_HTTP_CODE)!= 404;