PHP postgres 启用 ssl 支持

PHP postgres enable ssl support

很抱歉再次回答您多年前提出的问题。但我真的坚持这一点。 我有一个非常旧的遗留应用程序,运行 PHP 5.2.17。 我按照本指南设置了我的 docker 容器 https://andrewscaya.net/blog/bringing-php-52-back-life

我已正确设置所有内容。我下载并编译了一个 PHP 安装并使用 Apache 配置了它。它与 php.

一起工作正常

但是,我必须为 POSTGRES 连接提供 SSL 支持(在 PHP 中)。 根据 PHPINFO

现在默认不启用

我遇到的问题与其他人多年前遇到的问题基本相同。 Pgsql 的 SSL 支持
看: Enable SSL support for pgsql

所以据我了解,我需要重新编译 PHP 一次,但是要使用一个名为 libpg 的包? 我从哪里得到这个包,我如何用 PHP 源代码编译它?

经过 2 天的搜索,我终于找到了 LAPP 栈,它有一些旧版本支持 pgsql ssl https://community.bitnami.com/t/can-i-get-the-installers-for-wapp-and-lapp-stacks-for-5-4-45/38548

在长期 运行 中,我建议升级 PHP 版本,但我知道这可能需要很多工作。有很多关于升级版本的好指南。我建议逐个进行版本升级,逐个处理已弃用的功能和其他潜在问题,并测试每个脚本。

在短期内,我不确定这是否可行,但 PDO 在 5.2 中受支持(实际上在 5.1 中)并且因为它只是将信息传递给 PostgreSQL 库,我希望 SSL 支持工作。我在 5.4 中使用过它,我不知道这两个版本之间有什么变化。

这里有一个解决方案,由 IMSoP 提供,它解释了如何让它工作,并在您需要更多信息时指向更多官方文档:

如果失败,我会尝试的第二种方法是创建 SSH 隧道以连接到本地端口。一个例子是:

ssh -L 127.0.0.1:5443:127.0.0.1:5432 username@remoteboxaddress

然后您可以启动 PHP 端口 5433 上的本地连接,但它实际上是到远程机器的(安全)SSH 隧道。这还需要将远程框配置为接受(非加密的)本地连接,并且您可以通过 SSH 访问它。然后,如果你测试它并且它有效,你可以制作一个脚本来在启动时启动隧道,或者更好的是,当网络服务器启动时;这需要使用一种身份验证方法,例如存储在文件中的密钥,不需要输入密码。所以...这里有很多“如果”,就您是否能够使该解决方案起作用而言,但如果您在两台服务器上都具有 root 访问权限,则可以做到这一点,偶尔如果您这样做不是,这取决于它们的配置方式。

希望这两种解决方案中的一种对您有用。