php curl 在本地 XAMPP 上返回空字符串,但是相同的代码在生产服务器上返回正确的字符串

Posted

技术标签:

【中文标题】php curl 在本地 XAMPP 上返回空字符串,但是相同的代码在生产服务器上返回正确的字符串【英文标题】:php curl returns empty string on local XAMPP, however the same code returns proper string on production server 【发布时间】:2018-04-16 23:25:24 【问题描述】:

我在本地 XAMPP V3.2.2 上使用所有 default 设置尝试了来自 php.net 的 curl 示例代码,并将 URL 更改为 https://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json。 curl_exec 返回空字符串。但是,当我在生产服务器上运行相同的代码时,curl_exec 返回正确的字符串。

<?php 
// create curl resource 
$ch = curl_init(); 

// set url 
curl_setopt($ch, CURLOPT_URL, "https://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json"); 

//return the transfer as a string 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// $output contains the output string 
$output = curl_exec($ch); 

// close curl resource to free up system resources 
curl_close($ch);     
?>

【问题讨论】:

调试它***.com/questions/6324819/php-curl-returns-nothing 你有什么错误吗? @urfusion,没有收到任何错误。 curl_getinfo() 怎么样? CURLOPT_VERBOSE 怎么样?您尝试过哪些调试 @roman 统治,通过使用 curl_error($ch),我得到“SSL 证书问题:无法获取本地颁发者证书”,我猜“***.com/questions/28858351/…”是解决方案,其中包含 5配置 xampp 的步骤。但是,在开发环境中,跳过ssl verify,这需要一行代码,它很脏,但是很快,它可以工作。 【参考方案1】:

对于本地开发,要使 curl_exec 工作,解决方法 是添加以下行。

    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false);

【讨论】:

上面的代码是快速的,它跳过了ssl验证,我可以在开发环境下使用它。对于需要配置XAMPP的正确解决方案,请参考***.com/questions/28858351/…。

以上是关于php curl 在本地 XAMPP 上返回空字符串,但是相同的代码在生产服务器上返回正确的字符串的主要内容,如果未能解决你的问题,请参考以下文章

在 xampp Windows 7 上安装时必须加载 PHP 扩展“curl”

在 XAMPP 中为 CURL 启用 SSL 支持

更新 cURL 而不更新 Xampp

cURL 无法在本地服务器中使用客户端证书

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

curl 无法通过 ip static 连接本地 xampp