2

重複の可能性:
PHPで404のURLをテストする簡単な方法は?

私はcurlを使用して、PHPのバックエンドから一連のPDFをダウンロードしています。1.pdf、2.pdf......などのようにシーケンスがいつ終了するかわかりません。

以下は、PDFをダウンロードするために使用しているコードです。

$url  = 'http://<ip>.pdf';
    $path = "C:\\test.pdf";
 
    $fp = fopen($path, 'w');
 
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_FILE, $fp);
 
    $data = curl_exec($ch);
    
    fclose($fp);

しかし、そのpdfがバックエンドに存在しないことをどのように判断できますか?ファイルが見つからない場合、curlは応答を返しますか?

4

2 に答える 2

2
$ch=curl_init("www.example.org/example.pdf");
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result=curl_exec($ch);
curl_close($ch);

これを使用curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);すると、成功した場合は結果が返され、失敗した場合はFALSEが返されます。

これを使用curl_setopt($ch,CURLOPT_RETURNTRANSFER,false);すると、成功した場合はTRUEを返し、失敗した場合はFALSEを返します。

さらに、file not found

$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($http_code == 404)
{
  /*file not found*/
}
于 2013-01-24T15:03:40.473 に答える
1

後にhttp応答の法定コードをテストするだけです$data = curl_exec($ch);

$http_status = curl_getinfo($url, CURLINFO_HTTP_CODE);
if($http_status == '404') {

   //not found, -> file doesnt exist in your backend
}

詳細はこちら

于 2013-01-24T15:00:13.923 に答える