Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 什么是exec的curl_setopt等价物(';curl-k…';)_Php_Curl - Fatal编程技术网

Php 什么是exec的curl_setopt等价物(';curl-k…';)

Php 什么是exec的curl_setopt等价物(';curl-k…';),php,curl,Php,Curl,我正在尝试复制此命令的功能: exec('curl -k -d "pameters=here" https://apiurlhere.com', $output); 使用curl_exec(): 我一直在尝试文档中的不同选项(http://php.net/manual/en/function.curl-setopt.php),并认为它是CURLOPT_SSL_VERIFYPEER,但仍然失败(响应返回为空) 我发布到的URL使用SNI,当SSL证书返回与预期不同的主机名时,这会导致cURL失败

我正在尝试复制此命令的功能:

exec('curl -k -d "pameters=here" https://apiurlhere.com', $output);
使用curl_exec():

我一直在尝试文档中的不同选项(http://php.net/manual/en/function.curl-setopt.php),并认为它是CURLOPT_SSL_VERIFYPEER,但仍然失败(响应返回为空)

我发布到的URL使用SNI,当SSL证书返回与预期不同的主机名时,这会导致cURL失败

有一个curl_setopt等价于-k吗?

试试:

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
请参见尝试:

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
请参见

curl\u setopt($ch,CURLOPT\u SSL\u VERIFYPEER,FALSE)
相当于命令行上的
-k
(您不应该真正使用它,因为它使连接容易受到MITM攻击)

这里的问题是,您假设
-d“pameters=here”
等同于将这些参数像这样放入URL查询中
https://apiurlhere.com?parameters=here

情况并非如此,请参阅
-d
的文档:

(HTTP)将POST请求中的指定数据发送到HTTP服务器,其方式与浏览器在用户发出POST请求时的方式相同 填写HTML表单并按下提交按钮。这将导致 curl将数据传递给 使用内容类型application/x-www-form-urlencoded的服务器

您可能应该为此使用
POSTFIELDS

curl_setopt($ch, CURLOPT_POSTFIELDS, array("parameters" => "here"));
curl\u setopt($ch,CURLOPT\u SSL\u VERIFYPEER,FALSE)
相当于命令行上的
-k
(您不应该真正使用它,因为它使连接容易受到MITM攻击)

这里的问题是,您假设
-d“pameters=here”
等同于将这些参数像这样放入URL查询中
https://apiurlhere.com?parameters=here

情况并非如此,请参阅
-d
的文档:

(HTTP)将POST请求中的指定数据发送到HTTP服务器,其方式与浏览器在用户发出POST请求时的方式相同 填写HTML表单并按下提交按钮。这将导致 curl将数据传递给 使用内容类型application/x-www-form-urlencoded的服务器

您可能应该为此使用
POSTFIELDS

curl_setopt($ch, CURLOPT_POSTFIELDS, array("parameters" => "here"));

这是正确的选择。使用
curl\u error()
确定您得到的确切错误。使用curl\u error()是一个好主意,但没有抛出错误。这是正确的选项。使用
curl\u error()
确定您得到的确切错误。使用curl\u error()是一个好主意,但没有抛出错误。