我正在使用 aaronpk 的 Google Voice APIs在 Google Voice 中发送和接收 SMS 消息。我取消了 php.ini 中“extension=php_curl.dll”行的注释,并确认 cURL 正在运行。我现在被困在这一点上,并且不断收到此错误:
Uncaught exception 'Exception' with message 'Could not parse for GALX token'
我已经检查了所有基本的东西。该帐户的用户名和密码正确。我唯一能看到的是 cURL 没有写入 cookie 文件。
我知道脚本默认有 cookiejar/cookiefile 的 Linux 路径。我试过将其更改为 Windows 目录,并包括完整路径。我目前使用的代码片段是:
$this->_cookieFile = dirname(__FILE__) . "\cookies.txt";
即使修改了此代码,脚本也不会写入 cookies.txt 文件。
我已将这些脚本上传到 Linux 主机,它们运行良好,向我证明这是一个 Windows 问题。遗憾的是,我们没有用于生产环境的 Linux 服务器。
我正在寻找任何指导以使其在 Windows 中正常工作。现在我正在运行 XAMPP 的 Windows 7 机器上进行开发。生产环境可能是 Windows 2008 Server。
如有任何帮助,我们将不胜感激!
最佳答案
我知道这个已经很老了……但是分享一个答案仍然很好,是吗?
更改 cookie 文件的路径很好,但这里的问题是 cURL 尝试(但失败)验证 google 的 SSL 证书。可以找到两种解决方案here (我在 the accepted answer for this other SO question 中找到了该链接)
出于测试目的,我认为可以使用快速而肮脏的解决方案(盲目接受所有 SSL 证书而不进行验证)。 您需要将以下行与其他 curl_setopt 行一起插入到 GoogleVoice 类构造函数中
curl_setopt($this->_ch, CURLOPT_SSL_VERIFYPEER, FALSE);
对于生产代码,我会验证证书。我提供的第一个链接介绍了查找和保存证书。假设证书与 GoogleVoice.php 位于同一目录中,您将插入以下行
curl_setopt($this->_ch, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_setopt($this->_ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($this->_ch, CURLOPT_CAINFO, getcwd().'\BuiltinObjectToken-VerisignClass3PublicPrimaryCertificationAuthority.crt');
我不是 cURL 专家,所以我不能说是否有另一种方法来验证 SSL 证书(或者为什么 Linux 主机不需要它。)这应该是所有需要更改的aaronpk 的 Google Voice API 在 XAMPP 上运行
关于php - 在 XAMPP/Windows 7 上运行的 Google Voice "APIs"的 cURL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4190308/