带有https的PHP文件\u get\u contents参数返回false

带有https的PHP文件\u get\u contents参数返回false,php,https,file-get-contents,Php,Https,File Get Contents,php.net中所有关于url的示例都只演示了http,而没有演示https。我真的不明白为什么没有用https演示这一点。文件\u get\u内容对于http URL返回true,对于https返回false 网址 我是否需要在执行此功能的服务器中启用某些功能 我知道这是一个逻辑错误,但这个逻辑错误发生在内置函数中。我没有任何语法错误。我错过了什么 我的预期输出是,当一个https url被传递到文件中时,从文件中获取一个true返回 代码: function connectMe() {

php.net中所有关于url的示例都只演示了http,而没有演示https。我真的不明白为什么没有用https演示这一点。文件\u get\u内容对于http URL返回true,对于https返回false 网址

  • 我是否需要在执行此功能的服务器中启用某些功能
  • 我知道这是一个逻辑错误,但这个逻辑错误发生在内置函数中。我没有任何语法错误。我错过了什么
  • 我的预期输出是,当一个https url被传递到文件中时,从文件中获取一个
    true
    返回
  • 代码:

    function connectMe() {
       $urlHeader = $_REQUEST['urlHeader'];
       // if this is a http url it's working for file_get_contents returns true
       // if this is a https url it's not working file_get_contents gives false
       $status = send($urlHeader);
       var_dump($status);
       echo $status ? 'success' : 'failed';
       exit;
    }
    
    function send($url) {
        $ctx = stream_context_create(
            array(
            'http'=>array(
            'header'=>"Content-type: application/x-www-form-urlencoded",
            'method'=>'POST',
            'content'=>NULL
            )
          )
        );
    var_dump(stream_get_wrappers());
    $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);
    return file_get_contents($url, 0, $ctx);
    }
    
    注: 1.上面的代码已经按照stackoverflow中给出的解决方案进行了集成,结果没有任何变化。 2.启用了
    openssl
    ,并且启用了
    allow\u url\u fopen

    我得到的输出:

    数组(9){[0]=>string(5)“https”[1]=>string(4)“ftps”[2]=>string(3)“php”[3]=>string(4)“file”[4]=>string(4)“glob”[5]=>string(4)“data”[6]=>string(4)“http”[7]=>string(3)“ftp”[8]=>string(4)“phar”}

    openssl:yes http wrapper:yes https wrapper:yes wrappers:array(0=>'https',1=>'ftps',2=>'php',3=>'file',4=>'glob',5=>'data',6=>'http',7=>'ftp',8=>'phar',)

    警告:文件\获取\内容():php\网络\获取地址:gethostbyname失败。第40行FILENAME.PHP中的errno=0

    警告:文件\u获取\u内容(或网站):无法打开流:php\u网络\u getaddresses:gethostbyname失败。第40行FILENAME.PHP中的errno=0


    bool(false)失败

    您可能指向自签名ssl。如果是这样,那可能就是原因。检查以确保URL具有有效的SSL证书

    如果要绕过SSL验证,则需要添加一个stream\u context\u create以设置“verify\u peer”=>false

    见:

    您可能指向自签名ssl。如果是这样,那可能就是原因。检查以确保URL具有有效的SSL证书

    如果要绕过SSL验证,则需要添加一个stream\u context\u create以设置“verify\u peer”=>false

    见:

    您确定
    $\u请求('urlHeader')是否正确
    $\u REQUEST
    不是一个函数,也许这有助于@apokryfos的复制,我认为它应该是
    $\u REQUEST['urlHeader'@CommonMan实际上,这正是它的工作原理。这里发布的许多问题都是重复的。您没有给出任何迹象表明您对此问题进行了任何基本调试。请告诉我们您为解决此问题所做的努力以及这些尝试的结果。您确定
    $\u请求('urlHeader')是否正确
    $\u REQUEST
    不是一个函数,也许这有助于@apokryfos的复制,我认为它应该是
    $\u REQUEST['urlHeader'@CommonMan实际上,这正是它的工作原理。这里发布的许多问题都是重复的。您没有给出任何迹象表明您对此问题进行了任何基本调试。请告诉我们你们为解决这一问题所做的努力以及这些努力的结果。。。。这又会使原来的问题重复:)。。。这将再次使原来的问题成为重复的:)