我已将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-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 :(得分: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开始默认启用 xmlreader
,xmlwriter
,simplexml
sqlite3
,pdo-sqlite
从PHP 5.3.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