【问题标题】:Error 500 ( Fatal Error ) using pg_connect() in php在 php 中使用 pg_connect() 出现错误 500(致命错误)
【发布时间】:2016-09-28 16:53:06
【问题描述】:

我正在尝试使用pg_connect 访问另一台服务器上的 postgres,

我确实打开了远程访问,我可以使用bash 连接到我的 postgres 服务器!我确实在配置中托管了所有 client_ip/32 信任,但是当我尝试使用 pg_connect 时出现错误 500! pgsql 也已安装,我用 function_exists('pg_connect') 检查过它,我返回 true ! 我的代码是:

$dbconn = pg_connect("host=remote_IP port=5432 dbname=myDB user=postgres") or die("Could not connect");

我也试过了,又遇到了致命错误 500

    $dbconn = pg_connect("host=remote_IP port=5432 dbname=myDB
 user=another_super_user_i_made password=user_password") or die("Could not connect");

有什么问题?

【问题讨论】:

  • 错误日志说的问题是什么?
  • 服务器遇到内部错误或配置错误,无法完成您的请求。请通过 webmaster@shaibow.com 联系服务器管理员,告知他们此错误发生的时间,以及您在此错误之前执行的操作。 @Blake 服务器错误日志中可能提供有关此错误的更多信息。此外,在尝试使用 ErrorDocument 处理请求时遇到 500 Internal Server Error 错误。
  • 页面上是这么写的,但是 PHP 错误日志是怎么说的呢?
  • @Blake [28-Sep-2016 11:10:45 America/Chicago] PHP 警告:pg_connect():无法连接到 PostgreSQL 服务器:无法连接到服务器:连接超时跨度>

标签: php database postgresql centos7


【解决方案1】:

当您能够从网络上的一台机器连接到服务器,但从另一台机器上遇到连接超时问题时,这通常是由于以下几种原因之一。

1) DNS。您正在测试的机器(您称之为“远程访问”)能够解析 DNS 名称,而运行您的 PHP 代码的网络服务器则不能。您可以使用实际 IP 地址而不是 DNS 名称来进行测试。

2) 连接性。不同的机器在网络中以不同的方式连接。如果您能够从“远程访问”机器访问 IP,但 Web 服务器无法连接到它(“连接超时”),请尝试直接连接到该 Web 服务器(使用“远程访问”,如 SSH ) 看看是否可以从那里手动连接。

如果不是网络相关问题,则可能是您的默认 PG 超时问题。尝试使用连接字符串手动设置它们。具体来说,“connect_timeout”选项,像这样:

$d=pg_connect('host=example.com user=pgsql dbname=postgres connect_timeout=5');

【讨论】:

  • 感谢您的回答!但是,是的 !我已经尝试在客户端上使用 ssh,我可以使用 psql -U myuser -h myIP 并连接到服务器!但是当我使用 php 时出现错误!
  • 我还要添加以确保端口对 postgres 开放,谁知道可能正在运行什么服务/iptables/防火墙规则
  • 你使用的IP是不是“127.0.0.1”?
  • 还考虑连接字符串中的“connect_timeout”,如我的答案编辑中所述。
【解决方案2】:

存在主机阻塞问题! 我的客户端主机没有启用对数据库的远程访问! 您应该与您的主机确认他们可以追踪您的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    相关资源
    最近更新 更多