【发布时间】:2014-03-25 07:34:45
【问题描述】:
我知道关于这个特定主题有很多问题,但通常的建议似乎并没有帮助。我检查了 root 帐户下的服务器和我正在使用的特定帐户,在这两种情况下(如果它们甚至可以不同)SSL 被列为一项功能,HTTPS 被列为一项协议。
直到昨天我们将 PHP 从 ~5.1/5.2 升级到 5.4.26 之前,我的 cURL 函数都运行良好。我的假设是 PHP 和/或 cURL 是在没有 SSL 支持的情况下编译的,但事实并非如此。
如果有帮助,这些函数正在调用 Appcelerator 的云服务。这是登录函数之一,第一个抛出“trying to get property of non-object”错误,因为$res 为假:
function login() {
$url = 'https://api.cloud.appcelerator.com/v1/users/login.json?key=<MY_APP_KEY>';
$options = array(
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => array(
'login' => '<MY_APP_LOGIN>',
'password' => '<MY_APP_PASSWORD>'
)
);
$curl_session = curl_init($url);
curl_setopt_array($curl_session, $options);
$res = curl_exec($curl_session);
curl_close($curl_session);
$this->session_id = json_decode($res)->meta->session_id;
}
是否有可能即使列出了 SSL 和 HTTPS,但它们实际上并未生效?有没有办法检查并在必要时修复它?
【问题讨论】:
-
尝试将
CURLOPT_SSL_VERIFYPEER/CURLOPT_SSL_VERIFYHOST选项设置为false -
您说“SSL 被列为一项功能,而 HTTPS 被列为一项协议。”但您是如何做到的呢?对我来说,听起来您检查的内容与导致代码失败的原因不同。
-
@DanielStenberg SSH 到服务器根目录:-bash-3.2# curl-config --feature SSL IPv6 libz IDN NTLM -bash-3.2# curl-config --protocols HTTP HTTPS FTP FTPS FILE TELNET LDAP DICT TFTP