Конфликт библиотеки с OpenSSL и PHP 5.3.3? - PullRequest
3 голосов
/ 23 ноября 2011

Я пытаюсь внедрить веб-сервис на основе PHP SOAP в мое веб-приложение.Я получаю серию ошибок, которые, кажется, указывают на конфликт библиотек в отношении OpenSSL (или Curl и т. Д.), Это я понял, ища в интернете похожие ошибки, но считал, что общее мнение - проблема в библиотеках., я не могу найти решение.

Warning (2): SoapClient::__doRequest() [soapclient.--dorequest]: SSL operation failed with code 1. OpenSSL Error messages:
error:140773F2:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert unexpected message [CORE/vendors/Startrack/WSSecurity.php, line 110]
Warning (2): SoapClient::__doRequest() [soapclient.--dorequest]: Failed to enable crypto [CORE/vendors/Startrack/WSSecurity.php, line 110]
Warning (2): SoapClient::__doRequest() [soapclient.--dorequest]: connect() failed: Unspecified error [CORE/vendors/Startrack/WSSecurity.php, line 110]
Notice (8): Undefined property: SoapFault::$detail [APP/controllers/startrack_controller.php, line 38]
Notice (8): Trying to get property of non-object [APP/controllers/startrack_controller.php, line 38]

Could not connect to host

Это обслуживается с сервера Mac OSX Lion.PHP 5.3.3 установлен, и расширения для OpenSSL, Curl и SOAP включены.Это создается в CakePHP, который объясняет синтаксис сообщений об ошибках выше.Я использую уже предоставленный пакет веб-службы PHP.Вышеприведенное работает, когда размещено через MAMP, но я надеюсь, что не нужно полагаться на MAMP.

Единственная несовместимость, которую я могу найти, - между заголовками OpenSSL и версиями библиотеки, но из того, что я знаю, это не должнопроблема?

OpenSSL Library Version OpenSSL 0.9.8r 8 Feb 2011
OpenSSL Header Version  OpenSSL 0.9.8l 5 Nov 2009

Я пытаюсь понять, является ли предполагаемый «конфликт» между моим сервером и удаленным сервером?Файл WSDL включен в API веб-службы, поскольку они надеются избежать каких-либо проблем, и он работает через установку MAMP на том же компьютере.Так что я думаю, что это проблема установки между Apache / PHP и Curl / OpenSSL.

Буду признателен за любые указания на то, как установить актуальную проблему и исправить ее.

1 Ответ

0 голосов
/ 13 мая 2014

Это может быть связано с тем, что вы пытаетесь подключиться к серверу с поддержкой SSL 3, который может (?) Отключить SSL 2.

Попробуйте подключиться к серверу, как показано в командной строке:

 openssl s_client -connect {SERVER NAME OR IP}:443 -state

Если это не сработает, попробуйте подключиться так:

 openssl s_client -ssl3 -connect {SERVER NAME OR IP}:443 -state

Если это сработает, попробуйте создать класс-оболочку, подобный , который есть в PHPдокументация .

Вы должны добавить строку, аналогичную:

 curl_setopt($handle, CURLOPT_SSLVERSION, 3);

внутри функции callCurl, чтобы заставить SOAP подключаться через версию 3 ssl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...