其實我從 phpmyadmin 4.1.0 開始就覺得怪怪了,直到目前最新版 4.1.3 都一樣,有個大問題就是無法看資料表結構。如以下錯誤的截圖 :
我回報了這個 BUG 在以下網址
https://sourceforge.net/p/phpmyadmin/bugs/4207/
既然已經發現問題,當然這個就好解決,不過還是把原因說出來,並且讓大家知道 PHP 本身也存在某些相容性問題要注意
Util.class.php 的 1656 行裏頭有一行
return strftime($date, $timestamp);
只要暫時改成
return date("Y-m-d: H:i:s" , $timestamp);
這樣可以解決無法在 phpmyadmin 看資料表結構的問題
會發生錯誤是因為,phpmyadmin 有很多地方會用 AJAX 的方式要求回傳 json 格式資料,而 php 的 json_encode() 若遇到不正確的 utf8 字則會回傳 false,導致 phpmyadmin 要抓資料表結構的時候回傳一個空的網頁給前端就會出錯了。
這問題就是出在 strftime(),這個 strftime 會根據 OS 的語系及地區設定回傳相對應的編碼字串,而非完全為 utf-8。基本上在我的 Win8 環境下測試他根本不吃 utf-8 字串只吃 big5。
因此以下這段完全以 utf-8 字串寫成的 code ,其中年,月,日三個字的中文在 win8 中文版和 CentOS Linux 下將會得到不同結果
echo strftime("%Y 年 %m 月 %d 日 %H:%M", time());
如此就會造成 json_encode 的編碼發生錯誤了,請大家寫 PHP 也注意一下這個相容性問題。
謝謝您的解決辦法
已經順利解決了問題
不過從您官方論壇那邊最後一篇消息2014-01-15到現在似乎都還沒有官方回應
動作實在太慢了@_@
哈,就是啊,有回覆但都沒下文
其實我每次安裝新版本 phpmyadmin , 都要如法泡製去改這些 bug 才能順利運作
請問要去哪找Util.class.php?
這BUG直到我前幾個禮拜在Win 7 上裝的最新版都還在
歪國人可能認為這世界上所有 os 只有 utf-8 一種編碼吧 …. 我剛剛有去回應了
哈囉Pigo
目前最新的4.4.2版已經解決了這個問題
解決的辦法在你PO的那個討論串裡面有寫
而且以後也不用改成
return date(“Y-m-d: H:i:s” , $timestamp);
改成這樣反而執行時有錯說,我試過了
更正…
4.4.2版並沒有解決問題,解決問題的似乎是4.4.3(討論串上寫的)
而且原本的修改方法
return date(“Y-m-d: H:i:s” , $timestamp);
在4.4.2版上無效~我測試的狀況是這樣
奇怪…又可以了
還是等4.4.3好了@_@
恩,開發團隊歷經 7 個月後正視我寫的 bug , 討論串上有解決,下一版應該是可以完全解決了
剛剛才去下載 4.4.4 , 順便看下 4.4.3 的 ChangeLog 我看到有將我提報的 bug 解了
果真修好了
謝謝您當初對官方發佈了這個問題
造福了大家
謝謝