php – file_get_contents()如何修复错误“无法打开流”,“没有这样的文件”

当我尝试运行我的PHP脚本时,我收到以下错误:

failed to open stream: No such file or directory in C:\wamp\www\LOF\Data.php on line 3
script:

我的代码如下:

<?php

$json = json_decode(file_get_contents('prod.api.pvp.net/api/lol/euw/v1.1/game/by-summoner/20986461/recent?api_key=*key*'));

print_r($json);

?>

注意:* key *是替换URL(我的API密钥)中的字符串,并且由于隐私的原因而被隐藏.

我从URL中删除了https://,以获得一个错误消失.

我在这里做错了吗?也许网址?

最佳答案
该URL缺少协议信息. PHP认为它是一个文件系统路径,并尝试访问指定位置的文件.但是,该位置实际上并不存在于您的文件系统中,并且会引发错误.

您需要在您尝试从中获取内容的网址开头添加http或https:

$json = json_decode(file_get_contents('http://...'));

至于以下错误:

Unable to find the wrapper – did you forget to enable it when you configured PHP?

您的Apache安装可能没有使用SSL支持编译.您可以手动尝试安装OpenSSL并使用它,或使用cURL.我个人更喜欢cURL over file_get_contents().这是一个你可以使用的功能:

function curl_get_contents($url)
{
  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

用法:

$url = 'https://...';
$json = json_decode(curl_get_contents($url));

转载注明原文:php – file_get_contents()如何修复错误“无法打开流”,“没有这样的文件” - 代码日志