使用帖子字段调用时,Curl 在服务器上不起作用

Posted

技术标签:

【中文标题】使用帖子字段调用时,Curl 在服务器上不起作用【英文标题】:Curl is not working on server when calling with post fields 【发布时间】:2016-09-26 10:31:56 【问题描述】:

我有一个使用 curl 调用 api 的 php 代码

$username = 'xxxx';
$password = 'xxxx';
$fields = array(
    'field' => urlencode('field_value')
);
$fields_string = '';

foreach($fields as $key=>$value)  $fields_string .= $key.'='.$value.'&'; 
rtrim($fields_string, '&');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com");
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
$output = curl_exec($ch);
curl_close($ch);

print_r($output);

它在我的本地主机上工作,但在我的服务器上不工作。

这是我本地主机的curl信息 localhost_curl

这是我的服务器的 curl 信息server_curl

如果我调用没有帖子字段的 url,Curl 工作正常,但如果我使用帖子字段调用它,则会出现未找到的错误

【问题讨论】:

【参考方案1】:

当您确认 curl 正在您的服务器上运行时,可能会发生请求正在重定向(针对服务器的地理位置)并且您没有在 curl 中处理它。在你的卷曲上添加这个。

curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true);

您可以启用调试模式并查看 curl 在做什么。这将帮助您更多地了解错误(如果有)。

curl_setopt($ch,CURLOPT_VERBOSE, true);

【讨论】:

【参考方案2】:
curl_setopt( $ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM ); 

在 curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password); 之前使用它

并使用 curl_error ( $ch ) 函数查看 curl 错误。

【讨论】:

以上是关于使用帖子字段调用时,Curl 在服务器上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress Postname 永久链接在 localhost (xampp) 上不起作用

PHP cURL 在本地主机上工作但在服务器上不工作

Angular5服务调用在ngOnInit上不起作用

静态方法在 PHP 中的 Web 服务器上不起作用

仅调用 Typegoose 进行保存操作时,钩子在 updateOne 上不起作用

SendGrid Cc 和 Bcc 在 PHP 上不起作用