在CentOS上用OpenSSL重新编译PHP

时间:2017-08-15 17:12:48

标签: php openssl centos7 php-openssl

我已将openssl版本从1.02l升级到1.0.1e,将PHP版本从PHP 5.6升级到PHP 7.1.8(PHP使用yum安装)

问题是,PHP仍然检测到1.0.1e的openssl版本,而我希望它更新为安装的最新openssl版本,即1.0.2l

我想知道我的选择是什么,如何告诉PHP使用最新安装的openssl版本?

我的发现告诉我,唯一的方法是重新编译PHP? (如果有人能告诉我是否有其他办法,我将不胜感激)如果唯一的方法是通过重新编译,我需要有关如何去做的帮助?涉及的步骤是什么。根据我的理解,这就是我认为我必须做的事情。

  • 删除从YUM安装的PHP版本
  • 从源代码下载最新版本的PHP并在tmp目录中解压缩
  • 编译&安装PHP

我在这里遗漏了什么吗?

** 更新 **

以下是使用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吗?

2 个答案:

答案 0 :(得分:2)

是的,您需要下载openssl(源代码/头文件)的dev软件包,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上的文档以及您希望编译的每个模块的安装手册,例如{{3} }或GD2

  

注意:您需要下载每个模块的开发包   要编译 - 它消耗了大量的时间,并做出相应的计划。

     

注2:请记住要编译的所有模块   您自己的PHP构建将通过其功能(如   图像处理,https / curl请求等),所以它是高度的   建议仅使用稳定且经过验证的模块版本   为您的网站添加新漏洞。

** 更新 **

./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期望的不同时,我遇到了很多情况。

从PHP 5.1.2开始默认启用

xmlreaderxmlwritersimplexml

默认情况下启用

sqlite3pdo-sqlite从PHP 5.3.0开始

从PHP 5.5.0开始,不推荐使用

--enable-gd-native-ttf,在PHP 7.2.0中删除。

答案 1 :(得分:1)

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

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

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