2009-07-14 46 views
2

我想運行一個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)死(「連接失敗」);

並且「連接失敗」從未被顯示。超時後,我的瀏覽器只顯示「此頁面無法顯示」。

世界上可能造成這種情況的是什麼?

回答

0

這傢伙: 我沒有理由,但加入sslmode =禁用我的連接字符串使工作結束。它有什麼原因需要崩潰?我在一臺Windows機器上,phpinfo()表示OpenSSL已啓用。

1

令人懷疑電話是否會崩潰PHP。更可能的是,出於某種原因,由於某種原因,調用掛起,PHP的最大執行時間已被超出。 You can try extending the time limit在進行pg_connect()調用之前查看它是否最終返回某個東西。

0
  • 檢查Apache的錯誤日誌
  • 檢查PHP錯誤日誌
  • 確保你在你的Postgres的配置文件有logging enabled
  • 在你的配置,設置

    log_min_error_statement (DEBUG5) 
    

    抓住一切可能的。

  • 檢查Postgres的錯誤日誌
0

這聽起來很愚蠢,但是您的服務器是否在SSL下運行?我遇到了問題,服務器將嘗試對ssl進行身份驗證並無限期掛起,嘗試連接到不存在的端口。

+0

我假設它是。原始代碼沒有在連接標誌中設置該屬性。但是,原來的代碼在Linux上運行,而當發生此問題時,我在windows下。 – ryeguy 2009-07-14 20:13:31

0

sslmode =禁用爲我做了詭計。在postgres-config(ssl = false)中禁用ssl也起作用。

0

對我來說,Apache日誌顯示PHP沒有找到pg_connect()函數,即使安裝了php-postgresql。重新啓動Apache修復此問題,即

sudo service httpd restart 
+0

,爲什麼這樣工作? – 2015-01-28 06:21:52