2017-08-15 59 views
1

我從1.0.1e和PHP版本升級的OpenSSL版本1.02l從PHP 5.6PHP 7.1.8,PHP仍然檢測OpenSSL的版本1.0.1e而我想要它被更新到最新的openssl版本安裝即1.0.2l</p> <p>的問題是(用yum安裝PHP)重新編譯PHP使用OpenSSL在CentOS

我想知道我的選擇在這裏,我該如何去告訴PHP使用最新安裝的openssl版本?

我的發現告訴我要做到這一點的唯一方法是通過重新編譯PHP? (如果有人可以告訴我是否有其他方式,將會很感激)如果唯一的方法是重新編譯,那麼我需要關於如何處理它的幫助?涉及的步驟是什麼。從我的理解中,我認爲我必須這樣做。

  • 從源頭
  • 下載PHP的最新版本取下YUM安裝了PHP版本和tmp目錄
  • 編譯&解壓安裝PHP

我在這裏缺少什麼?

** UPDATE **

下面是用yum安裝了PHP擴展的列表

php-bcmath      x86_64  7.1.8-1.el7.remi    @remi-php71  94 k 
php-common      x86_64  7.1.8-1.el7.remi    @remi-php71  7.9 M 
php-fedora-autoloader    noarch  0.2.1-2.el7     @epel    14 k 
php-gd       x86_64  7.1.8-1.el7.remi    @remi-php71  204 k 
php-intl       x86_64  7.1.8-1.el7.remi    @remi-php71  947 k 
php-json       x86_64  7.1.8-1.el7.remi    @remi-php71  80 k 
php-mbstring      x86_64  7.1.8-1.el7.remi    @remi-php71  2.8 M 
php-mysqlnd      x86_64  7.1.8-1.el7.remi    @remi-php71  850 k 
php-pdo       x86_64  7.1.8-1.el7.remi    @remi-php71  386 k 
php-pecl-zip      x86_64  1.13.5-2.el7.remi.7.1  @remi-php71  175 k 
php-php-gettext     noarch  1.0.12-1.el7     @epel    57 k 
php-process      x86_64  7.1.8-1.el7.remi    @remi-php71  180 k 
php-tcpdf       noarch  6.2.13-1.el7     @epel    11 M 
php-tcpdf-dejavu-sans-fonts  noarch  6.2.13-1.el7     @epel    1.5 M 
php-tidy       x86_64  7.1.8-1.el7.remi    @remi-php71  106 k 
php-xml       x86_64  7.1.8-1.el7.remi    @remi-php71  851 k 

我現在要配置PHP來使用這個擴展,到目前爲止,我還與川方以下

./configure --with-openssl --with-openssl-dir=/usr/bin \ 
    --with-zlib \ 
    --enable-zip \ 
    --enable-xmlreader \ 
    --enable-xmlwriter \ 
    --enable-opcache \ 
    --enable-simplexml \ 
    --with-sqlite3 \ 
    --with-pdo-sqlite \ 
    --with-pdo-mysql=mysqlnd \ 
    --with-mysqli=mysqlnd \ 
    --with-mysql-sock=/var/lib/mysql/mysql.sock \ 
    --enable-mysqlnd \ 
    --with-mcrypt \ 
    --enable-mbstring \ 
    --enable-intl \ 
    --with-png-dir \ 
    --with-jpeg-dir \ 
    --enable-gd-native-ttf \ 
    --with-gd \ 
    --with-curl \ 
    --with-bz2 \ 
    --enable-bcmath 

我只想現在知道,如果我需要啓用任何擴展名從上面的列表我可以使用--enable或--with?例如我如何啓用php-xml。我只使用--enable-php-xml嗎?

+0

也許可能有一個更新的回購? –

+0

從我安裝的回購已經給了我最新的PHP版本。問題是當我從yum安裝它時,不知何故,PHP只獲取openssl 1.0.1e,而我的應用程序與openssl 1.2.5或更高版本存在依賴關係。 –

+0

請注意,RHEL(和CentOS)7.4在默認情況下具有openssl 1.0.2,因此remi版本庫中的PHP將使用它(必須等待幾個星期才能看到發生) –

回答

2

是的,你需要下載的OpenSSL(來源/頭)的開發包,PHP來源,並以下按鍵進行配置:

--with-openssl --with-openssl-dir=/usr/local/bin 

PHP Manual > OpenSSL > Installing/Configuring

你也可以使用其他鍵,如 --with-curl=/usr/local--with-gd - 與 PHP Manual > Appendices > Configure options文件和安裝手冊的每一個模塊檢查你想與像 GD2Curl

編譯

注意:您將需要下載要編譯的每個模塊的開發包 - 它會消耗大量的時間,並據此進行計劃。

注2:請記住,你要編譯成 所有模塊自己的PHP的構建將通過它的功能(如 圖像處理,HTTPS /捲曲要求等),訪問,所以它是非常 建議只使用穩定且經過驗證的模塊版本,而不要 爲您的網站添加新的漏洞。

** UPDATE **

./configure --with-openssl --with-openssl-dir=/usr/bin \ 
    --with-zlib=[DIR] \ 
    --enable-zip \ 
    --enable-opcache \ 
    --with-pdo-mysql=[DIR] \ 
    --with-mysqli=[DIR] \ 
    --with-mysql-sock=/var/lib/mysql/mysql.sock \ 
    --with-mcrypt=[DIR] \ 
    --enable-mbstring \ 
    --enable-intl \ 
    --with-png-dir=[DIR] \ 
    --with-jpeg-dir=[DIR] \ 
    --with-gd=[DIR] \ 
    --with-curl=[DIR] \ 
    --with-bz2=[DIR] \ 
    --enable-bcmath 

[DIR]的可自動發現,但我遇到了很多的情況下,當他們從PHP期待什麼不同。

xmlreaderxmlwritersimplexml默認情況下,開始支持PHP 5.1.2

sqlite3pdo-sqlite默認情況下啓用開始PHP 5.3.0

--enable-gd-native-ttf已過時開始PHP 5.5.0,刪除在PHP 7.2.0。

+0

只是爲了確認。當我運行'which openssl'時,它會顯示'/ usr/bin/openssl',所以我需要更新參數'--with-openssl-dir =/usr/bin'? –

+0

正確。如果路徑中有任何錯誤,請不要擔心 - 'configure'會在您花費時間進行編譯之前告訴您。 – iXCray

+0

另一個問題:我已經在我的服務器上從yum安裝了所有必需的PHP模塊。我只刪除了PHP,並沒有刪除任何模塊。所以編譯/安裝時我可以告訴PHP使用yum中已經安裝的所有模塊? –

1

您必須重新配置PHP構建過程。而不是使用yum獲得的軟件中的默認配置,您必須指示您的系統在編譯期間使用特定版本的SSL。

如果您已經安裝了最新版本的OpenSSL,您可以在編譯PHP之前轉至您的PHP源代碼並配置bulding。

./configure --with-openssl --with-openssl-dir=/usr/local/bin