php检查外部域上是否存在文件(访问子域)

php检查外部域上是否存在文件(访问子域),php,curl,get-headers,Php,Curl,Get Headers,我在网上有一个网站 上面的站点有一个管理区域,在其中上载图像,并在uploads/images目录的子文件夹中创建不同大小的副本 我正在为移动设备创建一个站点,该站点将在子域上运行,但使用来自主域的数据库和图像, 我希望能够访问父域上的图像,这可以通过使用完整域链接到图像来实现,即http:www.revelfilmlocations.co.uk/images/minisplay/myimage.jpg 虽然我需要先检查图像是否存在 我有一个php函数,它检查图像是否存在,如果存在,它将返回图

我在网上有一个网站

上面的站点有一个管理区域,在其中上载图像,并在uploads/images目录的子文件夹中创建不同大小的副本

我正在为移动设备创建一个站点,该站点将在子域上运行,但使用来自主域的数据库和图像,

我希望能够访问父域上的图像,这可以通过使用完整域链接到图像来实现,即http:www.revelfilmlocations.co.uk/images/minisplay/myimage.jpg

虽然我需要先检查图像是否存在

我有一个php函数,它检查图像是否存在,如果存在,它将返回图像的完整url

如果它不存在,我想返回占位符图像的路径

我拥有的以下函数,如果存在,则返回正确的图像,如果不存在,则只返回占位符图像所在目录的路径,即
http://www.reelfilmlocations.co.uk/images/thumbs/
。没有no-image.jpg位

有关网页为: 我在页面上获取图像的代码是:

<img src="<?php checkImageExists('/uploads/images/thumbs/', $row_rs_locations['image_ubs']);?>">
没能让它发挥作用,我四处挖掘,读了一些关于curl的帖子:

每次只返回一个占位符图像

if(!function_exists("remoteFileExists")){
    function remoteFileExists($url) {
        $curl = curl_init($url);

        //don't fetch the actual page, you only want to check the connection is ok
        curl_setopt($curl, CURLOPT_NOBODY, true);

        //do request
        $result = curl_exec($curl);

        $ret = false;

        //if request did not fail
        if ($result !== false) {
            //if request was ok, check response code
            $statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);  
            if ($statusCode == 200 ) {
                $ret = true;   
            }
        }
        curl_close($curl);

        return $ret;
    }
}

if(!function_exists("checkImageExists")){
    function checkImageExists($path, $file){
        $imageName = "http://www.reelfilmlocations.co.uk".$path.$file;

        $exists = remoteFileExists($imageName);
        if ($exists){
            // file exists do nothing we already have the correct $imageName
        } else {
                    // file does not exist so set our image to the placeholder
            $imageName = "http://www.reelfilmlocations.co.uk".$path."no-image.jpg";   
        }
            echo($imageName);
    }
}
我不知道这是否与获得403有关,也不知道如何检查情况是否如此


任何我可以尝试的指针或东西都将不胜感激。

我会使用CURL,发出HEAD请求并检查响应代码

未测试,但应做到以下几点:

 $URL = 'sub.domain.com/image.jpg';
 $res = `curl  -s -o /dev/null -IL -w "%{http_code}" http://$URL`;
 if ($res == '200')
     echo 'Image exists';
上面的代码将使用请购单的状态代码填充
$res
(请注意,我没有将
http://
前缀包含在
$URL
变量中,因为我是在命令行中这样做的


当然,使用PHP的CURL函数也可以得到同样的结果,而上面的调用可能无法在您的服务器上运行。我只是解释一下如果我有同样的需求,我会怎么做。

谢谢您的回复,我想主要的问题是,我将子域作为物理目录,而不是父域中的文件夹,我正在解决这个问题g 403错误由于子域没有访问主域的权限,我可能在抓救命稻草,我已在主域上创建了一个新的子域作为文件夹,并将查看这是否有帮助…如果希望图像位于脚本的同一文件系统中,您只需使用:
file\u exists()
:)Janio:事实上,这就是我在主域名上使用的内容,它起到了很好的作用,尽管它是一个子域名,我不能使用文件作为我所在子域的外部url存在……只需检查图像的相对路径:
file_exists('subdomain/folder/image.png')。为什么它不适用于您?因为子域不是主域中的文件夹,它的物理宿主是一个单独的实体。
 $URL = 'sub.domain.com/image.jpg';
 $res = `curl  -s -o /dev/null -IL -w "%{http_code}" http://$URL`;
 if ($res == '200')
     echo 'Image exists';