的问题是(用yum安装PHP)重新编译PHP使用OpenSSL在CentOS

问题描述:

我从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将使用它(必须等待几个星期才能看到发生) –

是的,你需要下载的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中已经安装的所有模块? –

您必须重新配置PHP构建过程。而不是使用yum获得的软件中的默认配置,您必须指示您的系统在编译期间使用特定版本的SSL。

如果您已经安装了最新版本的OpenSSL,您可以在编译PHP之前转至您的PHP源代码并配置bulding。

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