# 解決!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)

2020-04-16

同じタグを持つ記事をピックアップしました。