2011-07-01 8 views
3

PHPでcURLを使用して、リモートxmlファイルをローカルフォルダに取得する関数を作成しています。すべてはしかし、私が質問している正常に動作します:リモートファイルが存在しない場合PHP:CURLライブラリ:curl_execのステータスを取得

$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に基づきが虚偽であることを想定している、と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> 

私の質問は:それは成功したときに、それがなかったときに私を伝えるブールの変数を取得する方法。 (リモートファイルが存在しない場合を意味します)。

ありがとうございます。

答えて

3

あなたは

curl_getinfo($fileIn, CURLINFO_HTTP_CODE); 

は、HTTPコードは(あなたが200探している)が返されたかを確認するために使用することができます。

+0

印刷しようとしましたが、できませんでした。どうして? –

+0

curl_exec($ fileIn)の直後に印刷しましたか?その場合は、curl_errno($ ch)を使ってエラーが発生していないかどうかを確認してください(また、var_dumpは単純なエコーよりもデバッグに適しています) – Itako

+0

それは変です。 curl_getinfoは常に0です:( –

2

これを試してみてください!

$ isCopied = curl_getinfo($ fileIn、 CURLINFO_HTTP_CODE)= 404;

+0

404以外のHTTPコード値を受け入れることは恐れがありません。たとえば、http 500はサーバーエラーを表します。 – Itako

関連する問題