拥有 php 5.3.2 + Openssl 1.0.1 + Ubuntu 16.04

拥有 php 5.3.2 + Openssl 1.0.1 + Ubuntu 16.04

由于我必须升级到 TLS1.2,所以我必须升级到 OpenSSL 1.0.1 或更高版本。为此,我必须从 Ubuntu 10.04 升级到 Ubuntu 16.04

Ubuntu 10.04 有

PHP     5.3.2 
MySQL   5.1.66 
Apache  2.2.14 
OpenSSL 0.9.8

Ubuntu 16.04 有

PHP     7.0.18 
MySQL   5.7.18 
Apache  2.4.18 
OpenSSL 1.0.2

正如预期的那样,我现在拥有 OpenSSL 1.0.2,但是该网站现在无法运行,因为 PHP 版本已升级到 7.0.18。现在我有几个问题

  1. 我可以单独安装 PHP 5.3.2 并运行它吗?如果可以,它会使用 TLS 1.2 吗?
  2. 或者如果我需要删除 PHP 7 来安装 PHP 5.3.2,OpenSSL 也会降级吗?
  3. MySQL 已被某些版本的 PHP 弃用(我不知道哪个版本的 PHP/MySQL)。由于我的 MySQL 版本也已升级,我还可以从 PHP 5.3.2 访问 MySQL 吗?

我知道 PHP 5.3 已经停产。但我现在应该有这个版本来运行我的代码,但使用的是 TLS 1.2。

简而言之,我需要

PHP 5.3.2 可访问 MySQL + TLS1.2(>openssl 1.0.1) + Ubuntu 16.04。

如何实现这一点?

答案1

很大程度上取决于您是否只想使用官方支持的软件包。

如果您知道如何操作,没有什么可以阻止您删除 PHP 7 软件包并自行编译 PHP 5.3.2 并链接到 OpenSSL 1.0.2。这可能很容易,也可能很难,具体取决于依赖项中的 API 更改。不过,使用 5.3.29 可能值得,据我所知,它应该与您的 5.3.2 代码兼容,但还有一些修复。

http://www.php.net/releases/#5.3.29

不过,在正式发布之前,我会检查自发布以来出现的安全问题。它不再受 IIUC 支持,因此您需要自行修补它。

由于缺乏安全补丁,我还建议尽快更新代码库。PHP 发布迁移指南(例如http://php.net/migration54),您可以关注每一个,直到再次获得支持。

我个人并不知道有任何软件包(官方的或其他的)可以让你避免自己编译。

答案2

PHP 5.3 已达到 EOL。另外,我认为没有维护的 repo/distro 提供有效的 5.3 支持。

我认为唯一的好选择正在将代码迁移到受支持的 PHP 版本,或至少 5.4/5.5。您可以找到官方的 PHP 迁移指南这里

反正,如果你需要一个肮脏的解决方法,你可能有两个主要选择:

  • 自己编译
  • 使用第三方苯甲酸虚拟机或者容器

如果你想自己编译(尽管很麻烦),链接到较新的 OpenSSL 并解决可能出现的潜在问题,如 @user133831 提到的,您可以按照以下步骤操作这个答案

如果你想避免编译它,并且你正在考虑使用苯甲酸,您可以尝试使用安装SergeyD 的. 查看ppa说明,安装相应的PHP模块。

我还看到了基于旧版本 Ubuntu 的 PHP 5.3 专用第三方 Docker 容器,例如 12.04 和 12.10(旧版 OpenSSL 也适用)。不过,你可以尝试(然后扔掉)docker 容器,看看它是否能解决你的问题。也许你想看看这些链接:从头开始使用 PHP 5.3 DockerfilePHP 5.3 Docker 映像

无论你选择哪种方式,我建议在 VM 或 lxc/lxd/docker 容器中完成所有“脏”事(至少一开始),避免对主系统造成太大干扰。

无论如何,如果你选择继续使用 PHP 5.3,请记住,你最终可能会得到其他“副作用”,例如 MYSQL API 在较新版本中存在的问题、较新版本中修复的错误和不兼容性,当然还有,潜在的安全漏洞

希望能帮助到你。

答案3

在 16.04 上,我可以使用以下命令强制降级 libssl-dev:

apt-get install libssl-dev=1.0.2*

安装许多 lib*-dev 包后,我能够使用以下命令通过 phpbrew 编译 php 5.3.29:

phpbrew install 5.3.29 +everything -fpm +apxs2 -cli -cgi -phpdbg -dtrace -opcache -embed -gcov

我还安装了 ondrej/php ppa,这可能是一个因素,尽管它实际上只应该给你 php 5.6.x,所以我不确定。

相关内容