2017-03-09 97 views
0

我正在制作一个处理回传的应用程序,并且我想这样做,所以即使使用该应用程序的人没有openssl php扩展名,它也能够回发到https://的域名。 (它会警告他们,他们的回发将不安全。)如何通过file_get_contents()不通过openssl通过验证ssl来通过HTTPS发出请求?

我关掉了openssl并尝试了以下操作,但它给了我一个错误,我没有https封装。

$arrContextOptions=array(
    "ssl"=>array(
     "verify_peer"=>false, 
     "verify_peer_name"=>false, 
    ), 
); 
echo file_get_contents('https://httpbin.org/get?test=test', true, stream_context_create($arrContextOptions)); 

是否可以通过file_get_contents来提出请求?

+0

可能重复[file_get_contents()函数:SSL操作失败代码1.更多](http://stackoverflow.com/questions/26148701/file-get-contents-ssl-operation-failed-with-code-1-and-more) –

+0

我以前遇到过这个问题,作为你可以看到米y代码直接匹配接受的答案。 – Alesana

+0

不,它与接受的答案不符,那里的第二个参数设置为“false”,但在您的答案中为“true” –

回答

-1

试试这个代码:

<?php 
$fp = fsockopen("ssl://somedomain/abc/", 2000 , $ErrNo, $ErrString, 30); 
if (!$fp) { 
    echo "Error No : $ErrNo - $ErrString <br />\n"; 
} else { 
    $out = "POST/HTTP/1.1\r\n"; 
    $out .= "Host: somedomain \r\n"; 
    $out .= "Content-Type: application/xml; charset=utf-8;\r\n"; 
    $out .= "Connection: Close\r\n\r\n"; 
    fwrite($fp, $out); 
    while (!feof($fp)) { 
     echo fgets($fp, 128); 
    } 
    fclose($fp); 
} 
?> 

我有研究的file_get_contents与--no检查证书

readmore这里file_get_contents ignoring verify_peer=>false?