在 curl 请求 https 网址,响应为 false 的排查分析
1、在 curl 请求 https 网址,响应为 false 的排查分析。 var_dump($rst),其值为 false
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | $json = Helper::curlRequest( "https://api.weixin.qq.com/sns/jscode2session?appid={$config['id']}&secret={$config['secret']}&js_code={$code}&grant_type=authorization_code" ); public static function curlRequest( $url , $params = array (), $isreturn = true, $ispost = 0, $referer = '' , $need_header = false, $user_agent = 'Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)' ) { if ( empty ( $referer )) { $urlinfo = parse_url ( $url ); if (isset( $urlinfo [ 'scheme' ])) { $referer = $urlinfo [ 'scheme' ] . '://' . $urlinfo [ 'host' ] . '/' ; } else { $referer = '//' . $urlinfo [ 'host' ] . '/' ; } } $ch = curl_init(); curl_setopt( $ch , CURLOPT_URL, $url ); //curl_setopt($ch, CURLOPT_AUTOREFERER, $referer); curl_setopt( $ch , CURLOPT_REFERER, $referer ); curl_setopt( $ch , CURLOPT_HEADER, $need_header ); curl_setopt( $ch , CURLOPT_USERAGENT, $user_agent ); //curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'); if ( $ispost ) { curl_setopt( $ch , CURLOPT_POST, 1); curl_setopt( $ch , CURLOPT_POSTFIELDS, $params ); } curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1); $rst = curl_exec( $ch ); curl_close( $ch ); if ( $isreturn ) { return $rst ; } } |
2、在 php.ini 中配置 openssl.cafile。重启 php-fpm 后,不再响应 false
1 | openssl.cafile = /etc/ssl/certs/cacert.pem |
1 条回复
[…] 4、最后不得不基于 curl 重新实现,终于解决。参考:在 curl 请求 https 网址,响应为 false 的排查分析 […]