PHP判断远程文件是否存在

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
/*
 函数:remote_file_exists
 功能:判断远程文件是否存在
 参数: $url_file -远程文件URL
 返回:存在返回true,不存在或者其他原因返回false
*/
function remote_file_exists($url_file){
    //检测输入
    $url_file = trim($url_file);
    if (empty($url_file)) { return false; }
    $url_arr parse_url($url_file);
    if (!is_array($url_arr) || empty($url_arr)){return false; }
 
    //获取请求数据
    $host $url_arr['host'];
    $path $url_arr['path'] ."?".$url_arr['query'];
    $port = isset($url_arr['port']) ?$url_arr['port'] : "80";
 
    //连接服务器
    $fp fsockopen($host$port$err_no$err_str,30);
    if (!$fp){ return false; }
 
    //构造请求协议
    $request_str "GET ".$path."HTTP/1.1";
    $request_str .= "Host:".$host."";
    $request_str .= "Connection:Close";
 
    //发送请求
    fwrite($fp,$request_str);
    $first_header fgets($fp, 1024);
    fclose($fp);
 
    //判断文件是否存在
    if (trim($first_header) == ""){ return false;}
    if (!preg_match("/200/"$first_header)){
        return false;
    }
 
    return true;
}
?>

函数描述及例子

1
2
3
4
5
6
<?
    //测试代码
    $str_url 'http://127.0.0.2/viewarticle.php?id=119617';
    $exits = remote_file_exists($str_url);
    echo $exists "Exists" "Not exists";
?>

方法一(需要开启allow_url_fopen):

1
2
3
4
5
<?php
    $url "http://cn.wordpress.org/wordpress-3.3.1-zh_CN.zip";
    $fileExists = @file_get_contents($url, null, null, -1, 1) ? true : false;
    echo $fileExists//返回1,就说明文件存在。
?>

方法二(需要服务器支持Curl组件):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
function check_remote_file_exists($url) {
    $curl = curl_init($url); // 不取回数据
    curl_setopt($curl, CURLOPT_NOBODY, true);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); // 发送请求
    $result = curl_exec($curl);
    $found = false; // 如果请求没有发送失败
    if ($result !== false) {
 
        /** 再检查http响应码是否为200 */
        $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        if ($statusCode == 200) {
            $found = true;
        }
    }
    curl_close($curl);
 
    return $found;
}
 
$url "http://cn.wordpress.org/wordpress-3.3.1-zh_CN.zip";
echo check_remote_file_exists($url); // 返回1,说明存在。
 
?>
原文地址:https://www.cnblogs.com/liliuguang/p/9927709.html