【问题标题】:check existance of image on remote server with allow_url_fopen=off使用 allow_url_fopen=off 检查远程服务器上是否存在图像
【发布时间】:2012-03-01 23:32:41
【问题描述】:

我在一个网站上工作,该网站正在从已关闭 allow_url_fopen 的 cdn 服务器获取图像,这意味着 allow_url_fopen=off。

问题是在主站点显示图像之前,我们必须检查 cdn 服务器中的图像是否存在。如果图像存在,那么我们将显示它,否则不显示。

file_exists 和 file_get_contents 将不起作用,因为它们需要 allow_url_fopen=on。

还有其他方法吗???

任何帮助将不胜感激。

谢谢

【问题讨论】:

标签: php remote-access file-exists


【解决方案1】:

你可以使用cUrl:

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
if(empty($result)){die('No image');}

【讨论】:

  • 这不是一个正确的方法,因为curl结果可能包含http headers to,所以最好检查http header的状态码
  • 永远看不到 curl_exec 返回的标题。据我所知,对于标题,您需要添加 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
【解决方案2】:

您可以使用 CURL 库通过 HTTP 方法获取文件。如果使用,如果文件存在,则状态码将成功,否则将返回未找到状态码。另一种选择是使用 fsockopen 之类的套接字库函数连接到该服务器并通过 FTP 访问文件(如果已启用)。

浏览给出的示例 http://php.net/manual/en/function.fsockopen.php http://php.net/manual/en/function.fsockopen.php

【讨论】:

    猜你喜欢
    • 2011-08-20
    • 2013-04-30
    • 2013-09-21
    • 2010-11-24
    • 2012-06-13
    • 2013-01-01
    • 2011-06-03
    • 2014-06-27
    • 2012-05-16
    相关资源
    最近更新 更多