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 上返回空字符串,但是相同的代码在生产服务器上返回正确的字符串的主要内容,如果未能解决你的问题,请参考以下文章