2016-11-10 392 views
0

我的PHP程序在幾天前工作正常。我突然在我的php程序中使用curl出現了一個錯誤「SSL例程:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure」。我在網上搜索,發現它可能是因爲我的openssl太老(0.9.8e),不支持TLS。在Linux中升級OpenSSL之後,php中的OpenSSL和curl不會更新

我試過「yum update openssl」,但它沒有幫助,因爲Openssl尚未升級,仍然是0.9.8e。所以,我從網上下載並安裝了一個更新的版本(1.0.2j)。現在,它確實通過命令「openssl version」顯示了新版本號,但它仍然通過phpinfo()和「curl -V」顯示舊版本號。當然,它在運行php程序時仍然顯示SSL錯誤。

我是非常新的服務器設置。我如何更新PHP和curl中的openssl版本?

+0

服務器問題不能編程一個。 – 2016-11-10 07:56:47

+0

您必須重新編譯依賴於舊SSL版本的所有二進制文件。更新服務器可能會更簡單一些,因爲給定OpenSSL有多大年紀,其餘的軟件可能是舊的,也可能不支持。 –

+0

更新服務器似乎不適合我。我該如何重新編譯php和curl? – Frankie

回答

0

您必須更新php本身,因爲它帶有編譯的ssl。系統上的libssl不被php使用。它也可能封裝在php-curl包中。

+0

我已將PHP從5.4升級到5.5,但在phpinfo()中顯示的openssl和curl curion版本仍未更改。我如何更新php-curl包? – Frankie

0

我最終通過「下載並安裝」最新版本的OpenSSL,cUrl和PHP,併爲PHP設置OpenSSL和cUrl的新路徑來配置問題。