代码之家  ›  专栏  ›  技术社区  ›  ryeguy

pg_connect崩溃了我的php脚本

  •  2
  • ryeguy  · 技术社区  · 16 年前

    我正在尝试运行一个包含pg-connect($connection-string)的php脚本,它只会破坏我的php脚本。我在我的电脑上用XAMPP运行它,下面是一些事实:

    • 如果我将exit(“test”)放在pg_connect语句的正上方,它会成功地显示单词“test”,并终止脚本,因此我知道我的xampp安装工作正常。
    • 使用phpinfo()我可以看到PostgreSQL扩展确实被加载了。
    • 我可以从pgadmin连接到数据库服务器,所以这不是防火墙问题或类似的问题。
    • 如果我删除这个exit语句,pg_connect语句就会挂起。没有显示或记录任何警告,它甚至不会通过函数调用。我甚至有:

      $db_crm=pg_connect($connection_str);

      如果(!)$db_crm)die(“连接失败”);

    而且“连接失败”永远不会显示。我的浏览器在超时后只显示“此页面无法显示”。

    到底是什么导致了这一切?

    6 回复  |  直到 10 年前
        1
  •  1
  •   Randy    16 年前

    有人怀疑这个调用会使PHP崩溃。更可能的是,由于某种原因,调用由于某种原因挂起,并且超过了PHP的最大执行时间。 You can try extending the time limit 在进行pg_connect()调用之前,查看它是否最终会返回某些内容。

        2
  •  0
  •   Byron Whitlock    16 年前
    • 检查Apache错误日志
    • 检查PHP错误日志
    • 确保你有 logging enabled 在postgres配置文件中。
    • 在您的配置中,设置

      log_min_error_statement (DEBUG5) 
      

      抓住一切可能的。

    • 检查Postgres错误日志
        3
  •  0
  •   ryeguy    16 年前

    这里是伙计们: 我没有理由这样做,但是在连接字符串的末尾添加sslmode=disable可以使它正常工作。它必须崩溃的原因是什么?我在一台Windows机器上,phpinfo()说openssl已启用。

        4
  •  0
  •   Fat Lotus    16 年前

    这听起来真的很愚蠢,但是您的服务器运行在SSL下吗?我遇到过这样的问题:服务器将尝试对SSL进行身份验证并无限期挂起,试图连接到不存在的端口。

        5
  •  0
  •   user185950    16 年前

    sslmode=disable帮了我一把。在postgres配置中禁用ssl(ssl=false)也有效。

        6
  •  0
  •   JWHerrle    10 年前

    对于我来说,Apache日志显示,即使安装了php postgresql,php也没有找到pg connect()函数。重新启动Apache修复了这个问题,即

    sudo service httpd restart