# 解決!phpMyAdmin テーブル構造の内容が表示されない問題
環境及び起きている現象
- windows 10
- xampp
- phpMyAdmin 5.0.1
- 構造 メニュークリックしても内容なし
- 構造メニュー以外の機能と表示は正常
- エラー表示なし
- display_error on に設定済み
グーグル先生に聞いても、同じ現象の記事や質問はたくさんあるけど、解決案が少なかったので、検索の上順から確認しました。
# phpMyAdmin のバージョンが問題?
phpMyAdmin のテーブル構造が表示されないのですが、表示する方法はありますでしょうか?
確かに、phpMyAdmin 5.0.1 バージョンなので、出たばっかりで怪しいのは怪しいし、以前のバージョン使った時は問題なかったので、容疑あり。
だが、バージョン戻して治ったという回答がないので、怪しいまま
# Windows 環境の日本語設定が問題?
phpMyAdmin 構造タブ内が表示されない問題を解決(原因は phpMyAdmin の日本語設定にあった,Windows 環境のみ,バグの模様
Mac に問題なかったけど、windows の環境に XAMPP いれたら同じく構造メニューの内容が表示されないトラブルが起きているそうです。
確かに同じく windows10 で xampp 使ってるので、もしかしたら!
対応方法はwindows の日本語 → 英語にするって。。。うん。。。ほんまかよ
# 原因は phpMyAdmin 5.0.1 バージョンの Windows 依存バグ
参考記事 phpMyAdmin5.0.1 の「状態」タブが Fatal Error で表示されないバグ - Crieit (opens new window)
一度参考記事をスルーしましたが、全然わからなくて見てみました!
表示されない原因は strftime にあった
C:\xampp\phpMyAdmin\libraries\classes\Util.phpの 1617 行目の strftime を処理する際に、文字列を一度 UTF-8→SJIS→UTF-8 の変換してしまうので、年月日などの漢字が文字化けになって、不正なマルチバイト文字と認識され、strftime()が false になってしまったことが原因!
# 対応方法
C:\xampp\phpMyAdmin\libraries\classes\Util.php ファイル 1617 行目$ret = strftime($date, (int) $timestamp);のソースを下記のように書き換え
$ret = strftime('%Y-%B-%d %H:%M', (int) $timestamp);
# 最後
phpMyAdmin のバージョン問題は予感していたが windows 環境依存問題とは考えてなかったので、大変助かりました。
また、phpmyadmin の issues を確認したところ、2013 年にも strftime の話で問題起きているようですね。
json_encode error , because strftime return string is not utf8 in Windows 8.1 Chinese version #10598 (opens new window)