直到今天我在PHP下的facebook api工作得很好。 我什么都没改变。但从今天开始,我得到以下错误:
facebook失败:"错误:14094410:SSL例程:SSL3_READ_BYTES:sslv3警报握手失败 / usr / bin / php /var/www/pas/www/cronjobs/cronjob.channelsActions.php
有没有人知道,我怎么能解决这个错误?
答案 0 :(得分:11)
这是因为POODLE: SSLv3.0 vulnerability (CVE-2014-3566)。
在今天宣布此漏洞之后,许多服务暂时完全禁用了SSLv3,包括Facebook,并且Facebook在他们的PHP SDK中使用了SSLv3。
我不确定您是否拥有与我相同的Facebook PHP SDK版本,但如果您有base_facebook.php文件,请找到以下行:
$opts[CURLOPT_SSLVERSION] = 3;
并将其更改为不再允许SSLv3的值(find all constants listed):
$opts[CURLOPT_SSLVERSION] = CURL_SSLVERSION_DEFAULT;
或:
$opts[CURLOPT_SSLVERSION] = CURL_SSLVERSION_TLSv1;
或:
$opts[CURLOPT_SSLVERSION] = CURL_SSLVERSION_TLSv1_0;
这样Facebook API调用将使用TLSv1.0而不是SSLv3。 在我的情况下,这一行在" makeRequest($ url,$ params,$ ch = null)"功能在第963行,但根据您使用它的PHP SDK的版本可能会有所不同。
答案 1 :(得分:1)
使用SSL 3.0的旧版PHP SDK(Facebook PHP SDK 3.1.1及更早版本)将不再有效。所有开发人员都应该升级到我们使用TLS的SDK版本--Facebook SDK 3.2.3或更高版本。我们建议开发人员升级到我们最新的SDK SDK 4.0.0。
答案 2 :(得分:1)
我的服务器尚未升级到PHP 5.5或5.6,该版本包含CURL_SSLVERSION_TLSv1_0
。
使用较旧的PHP版本的修复程序是注释掉该行:
$opts[CURLOPT_SSLVERSION$