簡體   English   中英

pg_connect使我的php腳本崩潰

[英]pg_connect crashes my php script

我正在嘗試運行一個具有pg_connect($ connection_string)的PHP腳本,它只會使我的PHP腳本崩潰。 我正在計算機上從xampp上運行它,以下是一些事實:

  • 如果我把exit(“ test”); 在pg_connect語句的緊上方,它成功顯示了單詞“ test”並終止了腳本,因此我知道我的xampp安裝正在運行。
  • 使用phpinfo()可以看到確實已加載了postgresql擴展。
  • 我可以從pgadmin連接到數據庫服務器,所以這不是防火牆問題或類似問題。
  • 如果刪除此退出語句,則pg_connect語句將掛起。 沒有顯示或記錄警告,它甚至不會超過函數調用。 我什至有:

    $ db_crm = pg_connect($ connection_str);

    如果(!$ db_crm)die(“連接失敗”);

而且“連接失敗”甚至不會顯示。 超時后,我的瀏覽器僅顯示“此頁面無法顯示”。

到底是什么原因造成的?

令人懷疑的是該調用使PHP崩潰了。 更有可能是由於某種原因,調用由於某種原因而掛起,並且超出了PHP的最大執行時間。 您可以嘗試在調用pg_connect()之前延長時間限制 ,以查看它最終是否返回了某些東西。

  • 檢查Apache錯誤日志
  • 檢查PHP錯誤日志
  • 確保在Postgres配置文件中啟用日志記錄
  • 在您的配置中,設置

     log_min_error_statement (DEBUG5) 

    抓住一切可能。

  • 檢查postgres錯誤日志

伙計們:我沒有理由,但是在連接字符串的末尾添加sslmode = disable使其可以工作。 它必須崩潰的原因是什么? 我在Windows機器上,phpinfo()說啟用了OpenSSL。

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

sslmode = disable對我有用。 在postgres-config中禁用ssl(ssl = false)也可以。

對我而言,Apache日志顯示,即使安裝了php-postgresql,PHP也沒有找到pg_connect()函數。 重新啟動Apache解決了這個問題,即

sudo service httpd restart

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM