phpMyAdminのテーブルエクスポート画面でエラー
- Wednesday, July 17 2019 @ 10:43 AM JST
- 投稿者: gun
- 表示回数 11,955

phpmyadmin 4.6.6deb5で確認しています。
phpMyAdminのテーブルエクスポート画面でエラーが表示されました。
この記事は、phpのエラーメッセージが画面に出ていると「保護されていない通信」が表示されるようですので、エラーメッセージは本文へ転記しました。 下記、「続きを読む」で記事を全文表示しますと「保護されていない通信」が表示されます。 ご注意ください。 |
Quitaにある記事だと、phpとphpMyAdminのバージョンの齟齬が原因とのこと。
Warning in ./libraries/plugin_interface.lib.php#551![]() Backtrace ./libraries/display_export.lib.php#381: PMA_pluginGetOptions( string 'Export', array, ) ./libraries/display_export.lib.php#883: PMA_getHtmlForExportOptionsFormat(array) ./libraries/display_export.lib.php#1099: PMA_getHtmlForExportOptions( string 'table', string 'mysql', string 'user', string '', integer 0, array, integer 0, ) ./tbl_export.php#143: PMA_getExportDisplay( string 'table', string 'mysql', string 'user', string '', integer 0, integer 0, string '', ) |
確かに、php7.2から、count(null)に対して0ではなく、warningを返すようにしたという仕様変更があったことがわかりました。
つまり、エラーになってる場所を見ると、
if ($options != null && count($options) > 0) { |
ですので、$optionsがnullの場合にwarningになってそうです。
しかし、ここの場所では、$optionsがnullなら、前の条件式で引っかかりcount() まで評価されているように思えません。
とすると...。
なるほど、$optionsがarrayじゃない場合、この警告が表示されているというわけですね。
しかし、apt-get install phpmyadmin でインストールされるパッケージが、こんなんじゃ、正直、困ります。
早急に改修されたものにupdateされることを期待します。
当面困るので、強制的に型変換するとどうなるか、試してみました。
if ($options != null && count((array)$options) > 0) { |
あっ、エラーが消えた。w
正しい答えとも思えないので、非公式修正方法です。