phpMyAdminでテーブル構造を表示させる方法


phpMyAdminのバージョン5.0.1で言語が英語だと構造が表示されるのに、下記のように日本語に変更すると表示されない場合の対処法です。

こちらの記事を参考にしています。
解決!phpMyAdmin テーブル構造の内容が表示されない問題

作業環境

OS : Windows 10 HOME
phpMyAdmin : 5.0.1

Xamppのインストール方法

インストール方法については、別記事にて解説しています。
【環境構築】Windows10にXAMMPをインストール方法

解決方法

「Util.php」書き換える

Xamppを起動している場合は、停止します。
C:\xampp\phpMyAdmin\libraries\classesに移動します。

Util.phpをエディタで開きます。

1617行目の記述$ret = strftime($date, (int) $timestamp);を以下のように変更します。

$ret = strftime('%Y-%B-%d %H:%M', (int) $timestamp);


Xamppを再起動して、phpMyAdminを開くと下記のように表示されました。

表示されない原因

下記によると、表示されない原因は以下のとおりです。

strftime()の第一引数に、$dateの中身として%Y 年 2 月 %d 日 %H:%Mが渡されている。これ自体は仕様通りで問題が無いように見える。

しかし、strftimeを処理する際に、依存するWindowsのCライブラリでは、文字列を一度Shift-JISに変換している。つまり、UTF-8→SJIS→UTF-8の変換が行われている。ここで、漢字の「月」の字が文字化けを起こし、不正なマルチバイト文字と認識され、strftime()がfalseを吐いている、というのが真相である。

引用元:phpMyAdmin5.0.1の「状態」タブがFatal Errorで表示されないバグ

以上、phpMyAdminでテーブル構造を表示させる方法でした。