【问题标题】:Function file_get_contents() returns false函数 file_get_contents() 返回 false
【发布时间】:2019-01-09 19:10:53
【问题描述】:

我在脚本中使用函数file_get_contents()。但是每次都给假。

$image_url = 'http://www.websitename.com/images/imagename.jpg';
$variable = file_get_contents($image_url);
var_dump($variable);

返回false

我还检查了服务器的phpinfo() 设置。这里allow_url_fopen已经是on

我不知道为什么它返回 false。请帮我弄清楚这一点。非常感谢。

【问题讨论】:

  • 图片地址是什么?
  • 图片 url 是由 php 脚本生成的图片或任何外部图片,如websitename.com/images/imagename.jpg
  • 显然无法检索到网址?没有足够的信息让我们知道原因。你需要做一个var_dump($image_url) 并检查它是否包含你所期望的。它是本地 URL 还是异地 URL?如果通过浏览器访问 URL 是否有效?
  • @Magnus Eriksson $image_url 是一个外部图片网址。由于一些机密信息,我没有在段代码中提及。
  • 它是否适用于任何图像,或者只是这个我们无法知道其 URL 的特定图像不起作用?

标签: php fopen file-get-contents php-ini phpinfo


【解决方案1】:

在大多数情况下,这是您服务器的 SSL 证书的问题,影响最大

您可以使用此 hack 禁用 ssl 验证

$stream = stream_context_create(array( 
'ssl'=>array(     
'verify_peer'=> false,     
'verify_peer_name'=> false, ),
'http' => array(     
  'timeout' => 30     ) )     );

 $image_url = 'http://www.websitename.com/images/imagename.jpg';
 $variable = file_get_contents($image_url,0,$stream);
 var_dump($variable);

【讨论】:

    【解决方案2】:

    这里返回true试试看。

    $image_url = 'https://www.gettyimages.ie/gi-resources/images/Homepage/Hero/UK/CMS_Creative_164657191_Kingfisher.jpg';
    
    
    
        $variable = file_get_contents($image_url);
    
        var_dump($variable);
    

    【讨论】:

    • 是的,这在我尝试过的另一台服务器上工作,但在我的服务器上这不起作用。
    【解决方案3】:

    在图片网址前加上“http://”

    【讨论】:

    • 图片在https://下怎么办?或者如果 URL 已经包含协议怎么办?不要发布 cmets 作为答案。如果您没有足够的代表发表评论,请先进行处理。答案留给实际的解决方案。评论是一种特权,像这样试图绕过声望限制不是获得声望的好方法,恰恰相反。
    猜你喜欢
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多