猿问

php的curl扩展无法发起https请求

很奇怪的是,file_get_content函数可以对https地址发起请求并且收到响应报文,但是curl就不可以,这是什么原因呢?我已经安装了openssl扩展。

function fetch($url, $cookie=null, $postdata=null, $headers=null){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    echo "$url\n";
    if (!is_null($headers)) curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    if (!is_null($postdata)) curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
    if (!is_null($cookie)) curl_setopt($ch, CURLOPT_COOKIE, $cookie);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 20);
    $re = curl_exec($ch);
    curl_close($ch);
    return $re;
}

echo fetch("http://baidu.com"); // 有输出
echo fetch("https://baidu.com"); // 无输出
Administrator@changwei MINGW64 /d/www/test
$ php ./test.php
http://baidu.com
<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>

Administrator@changwei MINGW64 /d/www/test
$ php ./test.php
https://baidu.com
$ php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
ereg
fileinfo
filter
ftp
gd
hash
iconv
json
libxml
mbstring
mcrypt
mhash
mongo
mysql
mysqli
mysqlnd
odbc
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
phalcon
Phar
redis
Reflection
session
SimpleXML
SPL
sqlite3
standard
tokenizer
wddx
xdebug
xml
xmlreader
xmlwriter
xsl
zip
zlib

[Zend Modules]
Xdebug

吃鸡游戏
浏览 606回答 5
5回答

拉丁的传说

看 curlerror的信息

神不在的星期二

CURLOPT_SSL_VERIFYPEER 新版php中默认是2
随时随地看视频慕课网APP
我要回答