3 回答

TA貢獻2016條經驗 獲得超9個贊
我已經看到當使用在優勝美地下使用Apple的Secure Transport的cURL版本編譯php 且URL請求的目標不支持SSLv3(由于POODLE漏洞而被禁用)時,會發生此錯誤。該命令的輸出是什么?
$ php -i | grep "SSL Version"
我懷疑您會看到以下內容:
SSL Version => SecureTransport
您可以通過安裝php版本來解決此問題,該版本使用cURL版本使用OpenSSL而不是SecureTransport。使用自制程序最容易做到這一點。因此,如果尚未安裝,請先安裝。如果已安裝自制軟件,但brew update自升級到優勝美地以來您還沒有運行過,請首先執行此操作。還要確保您已安裝XCode> = 6.1和最新的XCode命令行工具。brew doctor會告訴您是否已正確執行操作。
在下面添加您需要的Homebrew水龍頭,以安裝釀造的php。如果這些存儲庫已被竊聽,請跳過此步驟。如果不確定這些存儲庫是否已被竊聽,請運行以下命令。最壞的情況下,您將無害Warning: Already tapped!
$ brew tap homebrew/dupes
$ brew tap homebrew/versions
$ brew tap homebrew/php
然后使用openssl安裝curl:
$ brew install --with-openssl curl
然后使用剛安裝并釀造的openssl的curl安裝php:
$ brew install --with-homebrew-curl --with-httpd24 php55
如果使用apache,請確保將其添加LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so到您的計算機/etc/apache2/httpd.conf并重新啟動apache。
如果不使用apache 2.4,則可以--with-httpd24從上述命令中刪除。
如果使用nginx,請遵循以下說明開始fpm:
要在啟動時啟動php-fpm:
mkdir -p ~/Library/LaunchAgents
cp /usr/local/opt/php55/homebrew.mxcl.php55.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist
安裝您將需要的任何php擴展,例如。mcrypt。
$ brew install php55-mcrypt
完成后,再次運行此命令:
$ php -i | grep "SSL Version"
而且您應該看到:
SSL Version => OpenSSL/1.0.2h
現在,重新測試您的應用程序,該應用程序將SSLRead() return error -9806消失。

TA貢獻1820條經驗 獲得超10個贊
我也有類似的SSLRead() return error -9806錯誤問題,也有SSL Version => SecureTransport。
但就我而言,問題是我設置了curl CURLOPT_HTTP_VERSION選項:
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
如果刪除該選項,則cURL將決定默認使用哪個版本。有關更多信息,請參見curl_setopt文檔。
這對我有用,并且我不需要使用cURL或PHP進行任何更改。但這是error -9806出現的許多情況之一的解決方案。
- 3 回答
- 0 關注
- 384 瀏覽
添加回答
舉報