PHP无法从本地页面获取json,只能获取远程URL

时间:2017-10-22 02:37:39

标签: php json slim slim-3

我目前正在使用Slim框架构建网站。我在我的网站上设置了一个端点并且它正在工作,但是当尝试使用PHP file_get_contents()json_decode()来获取它时,不会返回任何内容。当我运行相同的代码但将url更改为远程公共API时,json将被解码并输出到页面。

工作代码

$url = "https://jsonplaceholder.typicode.com/users";
$contents = file_get_contents($url); 
$results = json_decode($contents); // Returns JSON array

不适用于本地网站

$url = "https://local/api/endpoint";
$contents = file_get_contents($url); 
$results = json_decode($contents); // Returns NULL

关于可能导致这种情况的任何想法?可能是标题?

1 个答案:

答案 0 :(得分:1)

如果您使用自签名证书,则您的本地端点失败,因为php无法验证SSL证书。在本地开发中,您可以通过修改默认流上下文来绕过SSL CA检查:

$stream_opts = [
    "ssl" => [
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ]
];  
$response = file_get_contents("https://local/api/endpoint",
           false, stream_context_create($stream_opts));