台灣最大程式設計社群網站
線上人數
1753
 
會員總數:240901
討論主題:186659
歡迎您免費加入會員
討論區列表 >> PHP >> PHP連線PostgreSQL錯誤500問題
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
PHP連線PostgreSQL錯誤500問題
價值 : 50 QP  點閱數:333 回應數:10

樓主

力馬
門外漢
0 1
30 4
發送站內信

請教大大有關於PHP連線PostgreSQL出現Internal server error 500問題

環境描述:
Web server x 1
PHP版本5.2.16@Windows 2012 R2 IIS

DB server x 2
PostgreSQL版本: 9.4.9與9.3.14@Linux

問題描述:
web server使用單純的pg_connect()去連接PostgreSQL 9.3.14正常沒問題,可以操作資料庫的資料
web server使用單純的pg_connect()去連接PostgreSQL 9.4.9即出現500 Internal server error
php-errors.log並沒有相關的錯誤訊息

想知道是否是PHP 5.2.16對於PostgreSQL 9.4.9有支援的問題或是有其他原因,感謝





搜尋相關Tags的文章: [ php ] , [ PostgreSQL ] , [ pg_connect() ] , [ error 500 ] ,
本篇文章發表於2017-06-22 00:20
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小魚
檢舉此回應
參考看看
http://sky940811.pixnet.net/blog/post/314105403-%E3%80%90%E6%95%99%E5%AD%B8%E3%80%91php.ini%E8%A8%AD%E5%AE%9Adisplay_errors%E9%A1%AF%E7%A4%BA%E4%BC%BA%E6%9C%8D%E5%99%A8%E9%8C%AF%E8%AA%A4
本篇文章回覆於2017-06-22 00:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

小魚
檢舉此回應
連結是這樣用的嗎?
php.ini設定display_errors顯示伺服器錯誤(HTTP 500)錯誤原因
本篇文章回覆於2017-06-22 00:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

力馬
檢舉此回應
感謝小魚大大。在不同電腦去讀取那個php會出現兩種不同http 500錯誤資訊,一個是只有500 - internal server error;另一個是有詳細資訊如下

"HTTP Error 500.0 - Internal Server Error C:\Program Files\PHP\php.exe - The FastCGI process exited unexpectedly"

Module FastCgiModule

Notification ExecuteRequestHandler

Handler PHP_via_FastCGI

Error Code 0x00000001
本篇文章回覆於2017-06-22 01:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

小魚
檢舉此回應
不知道這是不是你要的

PHP用FASTCGI方式The FastCGI process exited unexpectedly問題解決

你讀到下面那個訊息的是你Server那台電腦嗎?
本篇文章回覆於2017-06-22 07:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

力馬
檢舉此回應
下面的訊息是在web server本機IE顯示的,其他電腦都只有Http 500
本篇文章回覆於2017-06-22 20:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

小魚
檢舉此回應
一般只有Server的電腦會顯示出真正的訊息,
你看看那篇寫的跟你的情況有沒有一樣?
本篇文章回覆於2017-06-22 20:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

力馬
檢舉此回應
沒有其他的php.ini檔在windows或system32目錄下

連到舊版PostgreSQL就沒問題,真的很奇怪
本篇文章回覆於2017-06-22 21:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

可樂快跑
檢舉此回應
一般來說,500既表示你的程式有錯誤。
解決方式就是把php.ini的display_errors改成on
然後記得重啟伺服器。(看你是apache還是nginx)
這樣應該就能看到真正的error究竟是什麼。
解bug這種事不要用猜的,該輸出錯誤就要讓他輸出。
這樣才能找到真正的原因。
另外,如果不知道那個php.ini才是正確的。
你可以用phpinfo();這個函式去查。
(一般來說,你的伺服器根目錄的管理系統也許就會有進入phpinfo的方法。如果沒有就自己隨便開個檔案寫,不過用完記得砍掉就是了。)

另外,linux的設定來說是比較複雜的。
一個是pg_hba.conf中有沒有設定連線過去的主機ip。
再來是postgresql.conf中有沒有開放連線的設定。
最後就是防火牆有沒有允許postgresql的5432port能通過。
這些都要注意。
本篇文章回覆於2017-06-23 01:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
我這堶邠O有注意到一個事情。
你說了你兩個版本PostgreSQL都在同一台伺服器上。

那你是採用什麼方式來做切換的。是否因為衝突而新版的PostgreSQL 其port有設定不一樣。
因為正常來講,並無法採用同port共存雙版本的方式才對。(特殊設定切換到是有這個可能)

大多數而言,PostgreSQL連線錯誤因該會出現在連線錯誤的原因。而不該是500錯誤。
大多數而言的500錯誤都是程式上的問題居多。

除非如#8所請的,你將錯誤輸出給關了。無法判斷輸出錯誤就出現500錯誤了。

你可以先用一個單純的連線php程式來做測試。(因為你沒提供程式碼,所以不太確定你是否有先基本測試)
先確定基本測試的連線是否沒問題。有無輸出錯誤的情況下。
本篇文章回覆於2017-06-23 13:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

力胖
檢舉此回應
我有遇過 500這個錯誤,我的問題是因為 db 欄位資料有誤造成的....你要不要確認一下是不是也是這樣子的狀況~~
本篇文章回覆於2017-08-13 20:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.