Я видел это ошибка происходит, когда PHP скомпилирован с версией CURL, которая использует Apple's Secure Transport под Йосемити и цель запроса URL не поддерживает SSLv3 (который, вероятно, был отключен из-за POODLE vulnerability). Каков результат этой команды?
$ php -i | grep "SSL Version"
Я подозреваю, что вы увидите это:
SSL Version => SecureTransport
Вы можете преодолеть это, установив версию PHP, который использует версию завитка, который использует OpenSSL вместо SecureTransport. Это проще всего сделать с homebrew. Поэтому сначала установите это, если у вас его еще нет. Если homebrew установлен, но вы не запустили brew update
с момента его обновления до Yosemite, сделайте это первым. Также убедитесь, что вы установили XCode> = 6.1 и новейшие инструменты командной строки XCode. brew doctor
расскажет вам, сделали ли вы все в порядке.
Добавить доморощенные краны ниже, которые вам понадобятся, чтобы установить варочный php. Пропустите этот шаг, если эти репозитории уже прослушиваются. Если вы не уверены, что эти репозитории уже используются, просто запустите приведенные ниже команды. В худшем случае сценарий, вы получите безвредный Warning: Already tapped!
$ brew tap homebrew/dupes
$ brew tap homebrew/versions
$ brew tap homebrew/php
Затем установите ротор с OpenSSL:
$ brew install --with-openssl curl
Затем установите PHP с помощью завиток вы только что установили и сваренный OpenSSL:
$ brew install --with-homebrew-curl --with-httpd24 php55
при использовании apache, не забудьте добавить LoadModule php5_module /usr/local/opt/php55/libexec/apache2/libphp5.so
в ваш.и перезапустите 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
должен уйти ,
Почему голос? Это реальная проблема, с которой я столкнулся, и не могу найти в Google хорошего решения. – Mattijs
Чтобы уточнить: я скручиваю POST с моего локального MB на внешний HTTPS APi – Mattijs
. Вероятно, вы получили нижний предел, потому что, хотя это вполне разумный вопрос, вне темы для SO - это действительно должно быть на Serverfault. – Synchro