SSLRead() Error in Curl POST to HTTPS URL on OSX 10.10 Yosemite
Issue:
After upgrading to OSX 10.10 Yosemite, CURL POST requests to HTTPS URLs are failing with the error:
Error Number:56 Error String:SSLRead() return error -9806
Cause:
This error occurs when PHP is compiled with a version of cURL that uses Apple's Secure Transport under Yosemite, and the target URL does not support SSLv3.
Solution:
To resolve this issue, install a version of PHP that uses a version of cURL that uses OpenSSL instead of Secure Transport. Here are the steps:
1. Check cURL Version:
php -i | grep "SSL Version"
If the output is "SecureTransport," proceed to the next step.
2. Install Homebrew:
brew install homebrew/core/homebrew brew update
3. Tap Required Repositories:
brew tap homebrew/dupes brew tap homebrew/versions brew tap homebrew/php
4. Install cURL with OpenSSL:
brew install --with-openssl curl
5. Install PHP with Homebrew cURL and OpenSSL:
brew install --with-homebrew-curl --with-httpd24 php55
6. Configure Apache (if using):
Add the following line to /etc/apache2/httpd.conf:
LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so
7. Start PHP-FPM for nginx (if using):
mkdir -p ~/Library/LaunchAgents cp /usr/local/opt/php55/homebrew.mxcl.php55.plist ~/Library/LaunchAgents/ launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist
8. Install PHP Extensions (optional):
brew install php55-mcrypt
9. Verify OpenSSL:
php -i | grep "SSL Version"
The output should show "OpenSSL/1.0.2h."
Now, your CURL POST requests to HTTPS URLs should succeed without the SSLRead() error.
The above is the detailed content of How to Fix \'SSLRead() return error -9806\' in Curl POST Requests on OSX 10.10 Yosemite?. For more information, please follow other related articles on the PHP Chinese website!