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

関連記事

twig 3 人気 PHP テンプレートエンジンがバージョンアップ
php curl 使って クリックなしで POST 送信
allowurlinclude の設定で ftp_connect()エラー
Lumen と Laravel 違い比較
Laravel5.7 の MVC 使う時のメモ
php 開発におけるルール・規約
PHP 7.4 にアップグレードして使えなくなる機能
正規表現一覧 よく使う検索・置換のパターン
開発時によく使うゼロ埋めパディング作業まとめ
知ってるようで知らなかった composer のコマンドとオプションの世界
Laravel 5.1 から 8.1 にバージョンアップ
laravel vuejs 初期設定
HTML から PDF に変換 PHP ライブラリ mPDF の設定
nuxtjs と codeigniter で jwt システム構築
爆速・軽量フレームワーク codeigniter PHP 開発
Laravel Error についてのメモ