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 访问权限,则可以做到这一点,偶尔如果您这样做不是,这取决于它们的配置方式。
希望这两种解决方案中的一种对您有用。
很抱歉再次回答您多年前提出的问题。但我真的坚持这一点。 我有一个非常旧的遗留应用程序,运行 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 访问权限,则可以做到这一点,偶尔如果您这样做不是,这取决于它们的配置方式。
希望这两种解决方案中的一种对您有用。