1

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

我已经正确设置了一切。我下载并编译了一个 PHP 安装并使用 Apache 进行了配置。并且它与 php 一起工作正常。

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

我基本上有很多年前其他人遇到的同样问题。Pgsql 的 SSL 支持
请参阅: 为 pgsql 启用 SSL 支持

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

4

2 回答 2

0

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

于 2021-08-11T20:16:14.627 回答
0

从长远来看,我会建议升级 PHP 版本,但我知道这可能需要大量工作。有很多关于升级版本的好指南。我建议逐个进行版本升级,一次一个地处理弃用的功能和其他潜在问题,并测试每个脚本。

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

这里有一个解决方案,由 IMSoP 提供,它解释了如何使其工作,并在您需要更多信息时为您提供更多官方文档:Connecting to PGSQL over SSL via PHP PDO

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

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

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

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

于 2021-09-03T15:52:38.350 回答