尝试所有已知解决方案后,无法使file_get_contents或cURL正常工作

时间:2012-07-25 10:28:10

标签: php curl file-get-contents

我正在尝试通过PHP连接到IIS Web服务器上的smartystreets API(liveaddress)。我从这里复制了file_get_contents和cURL示例:SmartyStreets github PHP examples。它们都不起作用。如果我将URL直接粘贴到我的浏览器中,它确实有效。 file_get_contents示例返回:

Warning: file_get_contents(https://api.qualifiedaddress.com/street-address/?street=817+Quail+Ln.+%2312+bakersfield%2C+ca+93309&auth-token=5Nk1%2FA) [function.file-get-contents]: failed to open stream: No such file or directory in C:\Inetpub\includes\myclass.php on line 28

我已在phpinfo中确认allow_url_fopen已启用。我也尝试过设置user_agent。不过,这不起作用。

cURL示例返回false。

这可能是IIS的问题吗?或者可能是由于防火墙设置?如果是这样,我如何找出要打开的端口?还有其他可能性吗?谢谢!

3 个答案:

答案 0 :(得分:3)

试试这个。通常只需让SSL使用cURL它是某种min./default/simple/widespread;)用于API的SSL配置),但无论如何,它取决于提供商的SSL配置。

curl_setopt($ch, CURLOPT_SSLVERSION, 3); // OpenSSL issue
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);  // Wildcard certificate
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

如果不起作用,请尝试了解smth。关于SSL configuration of your provider,您一定会找到解决方案。

答案 1 :(得分:0)

该网络服务需要授权。

有关如何传递身份验证详细信息的详细信息,请参阅curl_setopt manual

答案 2 :(得分:0)

我终于让cURL工作了。问题是链接使用SSL(URL中的https)。我通过回应curl_error($ ch)发现了这个;我添加了一个cURL选项,它运行得很好:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

我不确定file_get_contents不起作用的原因是否与此有关。