我从1.0.1e
和PHP版本升级的OpenSSL版本1.02l
从PHP 5.6
到PHP 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吗?
是的,你需要下载的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文件和安装手册的每一个模块检查你想与像
GD2或
Curl
编译
注意:您将需要下载要编译的每个模块的开发包 - 它会消耗大量的时间,并据此进行计划。
注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期待什么不同。
xmlreader
,xmlwriter
,simplexml
默认情况下,开始支持PHP 5.1.2
sqlite3
,pdo-sqlite
默认情况下启用开始PHP 5.3.0
--enable-gd-native-ttf
已过时开始PHP 5.5.0,删除在PHP 7.2.0。
只是为了确认。当我运行'which openssl'时,它会显示'/ usr/bin/openssl',所以我需要更新参数'--with-openssl-dir =/usr/bin'? –
正确。如果路径中有任何错误,请不要担心 - 'configure'会在您花费时间进行编译之前告诉您。 – iXCray
另一个问题:我已经在我的服务器上从yum安装了所有必需的PHP模块。我只删除了PHP,并没有删除任何模块。所以编译/安装时我可以告诉PHP使用yum中已经安装的所有模块? –
您必须重新配置PHP构建过程。而不是使用yum
获得的软件中的默认配置,您必须指示您的系统在编译期间使用特定版本的SSL。
如果您已经安装了最新版本的OpenSSL,您可以在编译PHP之前转至您的PHP源代码并配置bulding。
./configure --with-openssl --with-openssl-dir=/usr/local/bin
也许可能有一个更新的回购? –
从我安装的回购已经给了我最新的PHP版本。问题是当我从yum安装它时,不知何故,PHP只获取openssl 1.0.1e,而我的应用程序与openssl 1.2.5或更高版本存在依赖关系。 –
请注意,RHEL(和CentOS)7.4在默认情况下具有openssl 1.0.2,因此remi版本库中的PHP将使用它(必须等待几个星期才能看到发生) –