pg_connect崩溃我的PHP脚本

问题描述:

我想运行一个PHP脚本,它具有pg_connect($ connection_string),它只是崩溃我的PHP脚本。我在我的电脑上运行它的xampp,这里有一些事实:pg_connect崩溃我的PHP脚本

  • 如果我把退出(“测试”);紧接着在pg_connect语句之上,它成功地显示了单词“test”并终止了脚本,所以我知道我的xampp安装正在工作。
  • 使用phpinfo()我可以看到postgresql扩展确实加载了。
  • 我可以从pgadmin连接到数据库服务器,所以它不是防火墙问题或类似的东西。
  • 如果我删除此退出语句,pg_connect语句只是挂起。没有显示或记录警告,它甚至不会超过函数调用。我甚至有:

    $ db_crm = pg_connect($ connection_str); (!$ db_crm)死(“连接失败”);如果(!$ db_crm)死(“连接失败”);

并且“连接失败”从未被显示。超时后,我的浏览器只显示“此页面无法显示”。

世界上可能造成这种情况的是什么?

这家伙: 我没有理由,但加入sslmode =禁用我的连接字符串使工作结束。它有什么原因需要崩溃?我在一台Windows机器上,phpinfo()表示OpenSSL已启用。

令人怀疑电话是否会崩溃PHP。更可能的是,出于某种原因,由于某种原因,调用挂起,PHP的最大执行时间已被超出。 You can try extending the time limit在进行pg_connect()调用之前查看它是否最终返回某个东西。

  • 检查Apache的错误日志
  • 检查PHP错误日志
  • 确保你在你的Postgres的配置文件有logging enabled
  • 在你的配置,设置

    log_min_error_statement (DEBUG5) 
    

    抓住一切可能的。

  • 检查Postgres的错误日志

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

+0

我假设它是。原始代码没有在连接标志中设置该属性。但是,原来的代码在Linux上运行,而当发生此问题时,我在windows下。 – ryeguy 2009-07-14 20:13:31

sslmode =禁用为我做了诡计。在postgres-config(ssl = false)中禁用ssl也起作用。

对我来说,Apache日志显示PHP没有找到pg_connect()函数,即使安装了php-postgresql。重新启动Apache修复此问题,即

sudo service httpd restart 
+0

,为什么这样工作? – 2015-01-28 06:21:52