Reputation: 10877
I'm currently building a site using the Slim framework. I have an endpoint setup on my site and it is working but when trying to get it using PHP file_get_contents()
and json_decode()
nothing is returned. When I run the same code but change out the url to a remote public API, the json is decoded and output to the page.
Working Code
$url = "https://jsonplaceholder.typicode.com/users";
$contents = file_get_contents($url);
$results = json_decode($contents); // Returns JSON array
Does not work with local site
$url = "https://local/api/endpoint";
$contents = file_get_contents($url);
$results = json_decode($contents); // Returns NULL
Any ideas on what could be causing this? Possibly headers?
Upvotes: 1
Views: 207
Reputation: 4055
Your local endpoint is failing because php is unable to verify the SSL certificate, in the case you are using a self signed certificate. In local development you can circumvent SSL CA checking by modifying the default stream context:
$stream_opts = [
"ssl" => [
"verify_peer"=>false,
"verify_peer_name"=>false,
]
];
$response = file_get_contents("https://local/api/endpoint",
false, stream_context_create($stream_opts));
Upvotes: 2