Php MacOS Mojave和pg_通过SSL连接

Php MacOS Mojave和pg_通过SSL连接,php,postgresql,macos-mojave,Php,Postgresql,Macos Mojave,我使用Mojave和默认的Apache和PHP运行MacOSX 我正在尝试使用SSL/TLS连接到PostgreSQL,但出现错误: Warning: pg_pconnect(): Unable to connect to PostgreSQL server: sslmode value "require" invalid when SSL support is not compiled in in .. 但是,运行pg_config-configure确实会显示“-with openssl”

我使用Mojave和默认的Apache和PHP运行MacOSX

我正在尝试使用SSL/TLS连接到PostgreSQL,但出现错误:

Warning: pg_pconnect(): Unable to connect to PostgreSQL server: sslmode value "require" invalid when SSL support is not compiled in in ..
但是,运行pg_config-configure确实会显示“-with openssl”标志

但是,运行phpinfo会在pgsql下显示SSL已禁用


但是直接从终端上,我可以使用命令行psql和SSL。

我也遇到了同样的问题,下面是我如何解决它的

MacOS 10.14 Mojave的默认PHP在其PHP pgsql扩展中没有启用SSL

可以手动将SSL证书安装到php pgsql扩展中,但是 麻烦的

相反,您可以安装一个新版本的php,它确实会再次安装它的所有扩展,同时还带有一个启用ssl的php postgres扩展

如果没有,请先安装homebrew,然后按如下所示安装php 我安装了PHP7.3,因为我安装了Catalina,它随7.3.11一起安装,并升级到7.3.21

brew update
brew install php@7.3
brew link php@7.3
如果您将Mojave更新为Catalina,您可能还希望在完成上述操作后添加此项

brew link php@7.3 --force
完成上述操作后,您只需将其链接到您的$PATH即可完成以下操作:

echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/php@7.3/sbinbin:$PATH"' >> ~/.bash_profile
如果您将Mojave更新为Catalina,请不要执行上述操作 因为Catalina将默认shell更改为Zsh

echo 'export PATH="/usr/local/opt/php@7.3/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/php@7.3/sbin:$PATH"' >> ~/.zshrc
重新加载终端或打开新终端,然后键入

php -v (the version should be changed)
然后键入php-i,转到pgsql部分

pgsql

PostgreSQL Support => enabled
PostgreSQL(libpq) Version => 12.3
PostgreSQL(libpq)  => PostgreSQL 12.3 on x86_64-apple-darwin19.4.0, compiled by Apple 
clang version 11.0.3 (clang-1103.0.32.59), 64-bit
Multibyte character support => enabled
SSL support => enabled
Active Persistent Links => 0
Active Links => 0

Directive => Local Value => Master Value
pgsql.allow_persistent => On => On
pgsql.auto_reset_persistent => Off => Off
pgsql.ignore_notice => Off => Off
pgsql.log_notice => Off => Off
pgsql.max_links => Unlimited => Unlimited
pgsql.max_persistent => Unlimited => Unlimited

您应该看到SSL支持已启用。

切换了php版本,也为我工作,谢谢!