pg_connect崩溃我的PHP脚本

时间:2009-07-14 16:27:34

标签: php postgresql

我正在尝试运行一个包含pg_connect($ connection_string)的PHP脚本,它只会崩溃我的PHP脚本。我在计算机上运行xampp,这里有一些事实:

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

    $ db_crm = pg_connect($ connection_str);

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

甚至从未显示“连接失败”。我的浏览器只是在超时后显示“此页面无法显示”。

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

6 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

    log_min_error_statement (DEBUG5) 
    

    抓住一切可能。

  • 检查postgres错误日志

答案 2 :(得分:0)

这是男人们: 我没有理由,但在我的连接字符串末尾添加sslmode = disable使它工作。它崩溃的原因是什么?我在Windows机器上,phpinfo()表示OpenSSL已启用..

答案 3 :(得分:0)

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

答案 4 :(得分:0)

sslmode = disable为我做了诀窍。在postgres-config中禁用ssl(ssl = false)也有效。

答案 5 :(得分:0)

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

sudo service httpd restart