file_get_contents在HTTP中工作但不在HTTPS下工作

时间:2014-02-18 05:14:56

标签: php arrays function http https

$newLogUrl = SERVER URL PATH
$opt = array('http' => array(
             'method'  => "POST",
             'header'  => 'Content-type: application/json',
             'content' => $jsonCredenObj,
             'timeout' => 4));
$context = stream_context_create($opt);

$response = file_get_contents($newLogUrl,false,$context); 

以上代码在正常的http中工作,但在安全服务器https

中不起作用

错误

Warning: file_get_contents(): failed to open stream: HTTP request failed! HTTP/1.1 405 Method Not Allowed

1 个答案:

答案 0 :(得分:3)

405方法不允许

  

请求行中指定的方法不允许使用   Request-URI标识的资源。响应必须包括一个   允许包含所请求的有效方法列表的标头   资源。   同样提到MarcB时,您要连接的相应网址不接受POST方法。

Source : www.w3.org

请务必检查标题的网址,了解他们接受哪些方法等等。您可以使用$http_response_header进行此操作..

<?php
file_get_contents('http://thatremoteurl.com');
var_dump($http_response_header);

使用HTTPs URL

您需要在PHP.ini上启用openssl扩展名。

打开您的PHP.ini并检查此行;extension=php_openssl.dll。删除前面的分号并保存文件并重新启动网络服务器。