我有一个奇怪的问题。我有一个简单的代码,从OAuth API获取一个名为Mixi的社交平台的身份验证令牌。之后,一旦获得许可,我将使用简单的curl与PHP来获取用户的个人资料数据等。 但是,问题是它在使用PHP的任何正常托管上工作得非常好,例如在GoDaddy等,但我的项目要求它最终在基于Amazon EC2 Windows的服务器上,我并不熟悉;但我确保PHP在那里工作得很好,并且正确地提供了应用程序页面。
代码在其他托管服务器上工作正常的事实表明代码是正确的。但是,在亚马逊上;从第一个卷曲执行官,我没有得到身份验证令牌。我曾多次尝试重新生成API使用者密钥。
我甚至重新设置Windows系统时间以匹配相同的时区。我认为相关的一个额外信息是API URL都是https ...我不确定是否会导致任何问题。我是否需要在Amazon EC2 Windows服务器上设置一些特殊功能才能使用社交网络API中的cURL正确获取?
如果您希望我提供任何其他信息,请告诉我,但它令人困惑,因为我的应用程序的完全相同的代码适用于我通过cPanel访问的2个不同的正常托管服务提供商,并且我正在获取令牌和所需的配置文件数据那里的JSON响应。
感谢。
答案 0 :(得分:0)
经过长时间的斗争,这是解决方案:
要在Amazon EC2上通过cURL运行HTTPS,需要包含单独的证书文件。这可以从这里下载:
http://curl.haxx.se/docs/caextract.html
在此之后,在cURL调用之前在PHP代码中添加它的方法是:
curl_setopt($ch, CURLOPT_CAINFO, 'cacert.pem');
其中$ ch是curl处理程序(curl_init()调用的返回值)。我希望这可以帮助任何面临同样问题的人无法在EC2上运行https fetch。 我仍然不确定,为什么相同的代码适用于Godaddy或任何正常托管,可能他们自己包含此证书,因此我们可以直接从cURL调用https。