如何使file_get_content()与HTTPS一起工作?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (25)

我正在设置信用卡处理,需要使用解决办法的卷曲。当我使用测试服务器(它没有调用SSL URL)时,下面的代码运行良好,但是现在当我使用HTTPS在工作服务器上测试它时,它失败了,错误消息“未能打开流”。

function send($packet, $url) {
  $ctx = stream_context_create(
    array(
      'http'=>array(
        'header'=>"Content-type: application/x-www-form-urlencoded",
        'method'=>'POST',
        'content'=>$packet
      )
    )
  );
  return file_get_contents($url, 0, $ctx);
}
提问于
用户回答回答于

试试下面的脚本,看看是否有https包装器可用于你的php脚本。

$w = stream_get_wrappers();
echo 'openssl: ',  extension_loaded  ('openssl') ? 'yes':'no', "\n";
echo 'http wrapper: ', in_array('http', $w) ? 'yes':'no', "\n";
echo 'https wrapper: ', in_array('https', $w) ? 'yes':'no', "\n";
echo 'wrappers: ', var_export($w);

输出应该类似于

openssl: yes
http wrapper: yes
https wrapper: yes
wrappers: array(11) {
  [...]
}
用户回答回答于

要允许https封装器:

  • php_openssl扩展必须存在并被启用
  • allow_url_fopen 必须设置为 on

在php.ini文件中,如果不存在,则应添加以下行:

extension=php_openssl.dll

allow_url_fopen = On

扫码关注云+社区