web-dev-qa-db-ja.com

phpmyadmin - count():パラメータはCountableを実装する配列またはオブジェクトでなければなりません

私はこれを見るテーブルを開いて、テーブルにバックアップをアップロードしました:

Warning in ./libraries/sql.lib.php#601
count(): Parameter must be an array or an object that implements Countable

Backtrace

./libraries/sql.lib.php#2038: PMA_isRememberSortingOrder(array)
./libraries/sql.lib.php#1984: PMA_executeQueryAndGetQueryResponse(
array,
boolean true,
string 'alternativegirls',
string 'tgp_photo',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/pmahomme/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `tgp_photo`',
NULL,
NULL,
)
./sql.php#216: PMA_executeQueryAndSendQueryResponse(
array,
boolean true,
string 'alternativegirls',
string 'tgp_photo',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/pmahomme/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `tgp_photo`',
NULL,
NULL,
)
./index.php#53: include(./sql.php)

内部phpMyAdmin ...

PHPは7.2、サーバーは昨日インストールされたUbuntu 16.04です。

私が探しているのは自分のコードにこのエラーがあるのを見たのですが、phpMyAdminでそれを受け取った人が誰もいませんでした...

私は何をすべきか?それは私の間違いですか? phpmyadminのエラー?更新待ち? PHP 7.1に戻りますか。

217
alebal

ファイル/usr/share/phpmyadmin/libraries/sql.lib.phpを編集します。

Sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php

置き換えます:count($analyzed_sql_results['select_expr'] == 1)

あり:(count($analyzed_sql_results['select_expr']) == 1)

サーバーApacheを再起動します。

Sudo service Apache2 restart
392
Jacky Nguyen

最も簡単な方法:

これをターミナルのコマンドラインの下で実行してPhpMyAdminに戻ってください。今ではうまくいきます:)

Sudo sed -i "s/|\s*\((count(\$analyzed_sql_results\['select_expr'\]\)/| (\1)/g" /usr/share/phpmyadmin/libraries/sql.lib.php

手動による方法:

sql.lib.php ファイルを開く

nano /usr/share/phpmyadmin/libraries/sql.lib.php

ファイル上のcount($analyzed_sql_results['select_expr']コードを見つけます。これは〜 613 行で見ることができます。あなたは間違ったコードの下にこれを見ることができます

|| (count($analyzed_sql_results['select_expr'] == 1)

その間違ったコードを以下のものに置き換えてください。

|| ((count($analyzed_sql_results['select_expr']) == 1)

ファイルを保存して PhpMyAdmin に移動します。

今ではうまくいきます:)

debianでテスト済み、Ubuntuでも動作するはずです。

1.)最初に最新のphpMyadminファイルをダウンロードしてください。 

2.)/usr/share/phpmyadminディレクトリにある以前のバージョンのファイルをすべて削除(バックアップ)します。 

3.)最新のphpmyadminのすべてのファイルを/usr/share/phpmyadmin/ディレクトリに解凍します。 

4.)ファイルlibraries/vendor_config.phpを変更して行を変更します。

define('CONFIG_DIR', '');

に 

define('CONFIG_DIR', '/etc/phpmyadmin/');

そして

define('TEMP_DIR', './tmp/');

に 

define('TEMP_DIR', '/tmp/');

5.)Apacheサーバーを再起動して終了します。

62
shibby

私はこれを見つけました PHP 7.2 count() - sql.lib.phpの構文エラー

それは私の設定で完璧に動作します。

Debian 9, 
PHP 7.2.3-1+0~20180306120016.19+stretch~1.gbp81bf3b (cli) (built: Mar  6 2018 12:00:19) ( NTS )

開く /usr/share/phpmyadmin/libraries/sql.lib.php 

行の変更 == の前に括弧を移動

||(count($plicated_sql_results ['select_expr']== 1) &&($ analyze_sql_results ['select_expr'] [0] == '* )))

function PMA_isRememberSortingOrder($analyzed_sql_results){

return $GLOBALS['cfg']['RememberSorting']
    && ! ($analyzed_sql_results['is_count']
        || $analyzed_sql_results['is_export']
        || $analyzed_sql_results['is_func']
        || $analyzed_sql_results['is_analyse'])
    && $analyzed_sql_results['select_from']
    && ((empty($analyzed_sql_results['select_expr']))
        || ((count($analyzed_sql_results['select_expr'] ) == 1)
            && ($analyzed_sql_results['select_expr'][0] == '*')))
    && count($analyzed_sql_results['select_tables']) == 1;
 }
52
loquace

ファイルを編集 '/usr/share/phpmyadmin/libraries/sql.lib.php'

置換 (count($analyzed_sql_results['select_expr'] == 1)

あり (count($analyzed_sql_results['select_expr']) == 1

これは私のために働いた

29
Works on UBUNTU 18.04 


Edit file: '/usr/share/phpmyadmin/libraries/sql.lib.php'
Replace: (count($analyzed_sql_results['select_expr'] == 1)
With:  ((count($analyzed_sql_results['select_expr']) == 1)

Restart the server
Sudo service Apache2 restart
28
kaleem

phpmyadmin 4.7.4は「PHP 7.2との互換性の問題をいくつか解決しました」 

たぶんあなたはphpmyadminの古いバージョンを持っているのでしょう。

https://www.phpmyadmin.net/news/2017/8/24/phpmyadmin-474-released/

23

誰かがDBエクスポートページに同様のエラーを持っている場合(私はUbuntu 18.04でこの問題を抱えていました)、/usr/share/phpmyadmin/libraries/plugin_interface.lib.phpファイルの551行目をコードで置き換えます

if ($options != null && (is_array($options) || $options instanceof Countable) && count($options) > 0) {
21
jbator

次の手順をubuntu-18.04で進めます。

ステップ1) find sql.lib.php

次のようになります。

/usr/share/phpmyadmin/libraries/sql.lib.php

ステップ2) ターミナルを開き(Alt + t):

Sudo /usr/sbin/pma-configure

ステップ3) Sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php そして以下の関数を検索 

  
 
関数PMA_isRememberSortingOrder($ analyze_sql_results)
 {
 return $ GLOBALS ['cfg'] ['RememberSorting'] 
 &&! ($ analyze_sql_results ['is_count'] 
 || $ analy_sql_results ['is_export'] 
 || $ analy_sql_results ['is_func'] 
 || $ analy_sql_results ['is_analyse'] )
 && $ analysed_sql_results ['select_from'] 
 &&((empty($ designed_sql_results ['select_expr'])))
 ||(count($ analysed_sql_results ['select_expr']) == 1)
 &&($plicated_sql_results ['select_expr'] [0] == '*'))))
 && count($plicated_sql_results ['select_tables'])== 1; [ 
} 
 

ステップ4) 上記の関数を次のように置き換えます。

 
関数PMA_isRememberSortingOrder($ analyze_sql_results)
 {
 return $ GLOBALS ['cfg'] ['RememberSorting'] 
 &&! ($ analyze_sql_results ['is_count'] 
 || $ analy_sql_results ['is_export'] 
 || $ analy_sql_results ['is_func'] 
 || $ analy_sql_results ['is_analyse'] )
 && $ analysed_sql_results ['select_from'] 
 &&((empty($ designed_sql_results ['select_expr'])))
 ||(count($ analysed_sql_results ['select_expr']) )== 1)
 &&($ analysed_sql_results ['select_expr'] [0] == '*'))
 && count($ analyze_sql_results ['select_tables'])== 1; [ 
} 
 

ステップ4) ターミナルでファイルと以下のコマンドを保存して閉じる

Sudo /usr/sbin/pma-secure

ステップ5) Sudo service mysql reload

ステップ6) Sudo service Apache2 reload

それは私のために働きます.. Goodluck

18
Neoark Software

警告 ./libraries/plugin_interface.lib.php#532に

count():パラメータは配列またはを実装するオブジェクトでなければなりません

count(): Parameter must be an array or an object that implements Countable

phpmyadminのライブラリのcouseはいくつかのパラメータを数えようとします。この行532で、私はこのパスでこのコードを見つけました。

phpmyadmin’s library try to count some parameter

532行目のファイルの編集 /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

Sudo nano /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

if ($options != null && count($options) > 0) {という行を見つけ、count($options)count((array)$options)に置き換えます。

enter image description here

Apacheサービスを再起動します。

Sudo service Apache2 restart

新しいphpバージョンでは、 count() または sizeof() をun array typeと一緒に使用することはできません。そのため、ここでパラメータを配列に強制的に変更する必要があります。

13
M.A.K. Ripon

ファイル内のこの関数を置き換えてみてください。/usr/share/phpmyadmin/libraries/sql.lib.php

function PMA_isRememberSortingOrder($analyzed_sql_results)
{
    return $GLOBALS['cfg']['RememberSorting']
        && ! ($analyzed_sql_results['is_count']
            || $analyzed_sql_results['is_export']
            || $analyzed_sql_results['is_func']
            || $analyzed_sql_results['is_analyse'])
        && $analyzed_sql_results['select_from']
        && ((empty($analyzed_sql_results['select_expr']))
            || (count($analyzed_sql_results['select_expr']) == 1)
                && ($analyzed_sql_results['select_expr'][0] == '*'))
        && count($analyzed_sql_results['select_tables']) == 1;
}
13
Oleksandr P.

私のために働く.. Ubuntu 18.04

Sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php

ファイル上のcount($analyzed_sql_results['select_expr']コードを見つけます。これは613行目で見ることができます。

|| (count($analyzed_sql_results['select_expr'] == 1)

単にコードに置き換えます。

|| ((count($analyzed_sql_results['select_expr']) == 1)

ファイルを保存してPhpMyAdminをリロードしてください。

完了しました。

10
Ucup Timposu

Ubuntu 18.10(2018年12月)

613、614、615行目は、

        || count($analyzed_sql_results['select_expr']) == 1
            && ($analyzed_sql_results['select_expr'][0] == '*'))
    && count($analyzed_sql_results['select_tables']) == 1;
10
ole

私は最良の選択肢はPhpmyadminをこれがすでに修正されたバージョンに更新することであると思います。

それがdebとして公開されるまでは、 @ crimson-501 answer にコピーします)のようにすることができます。

読み続けます!

PMAにログインした後、2つのエラーに気付くかもしれません。

the configuration file now needs a secret passphrase (blowfish_secret). phpmyadmin
The $cfg['TempDir'] (./tmp/) is not accessible. phpMyAdmin is not able to cache templates and will be slow because of this.

ただし、これらの問題は比較的簡単に解決できます。最初の問題については、あなたがしなければならないのはあなたが選んだエディタをつかみ、/usr/share/phpmyadmin/config.inc.phpを編集することだけですが、問題がありました、我々はそれを取り除きました!それでいい、あなたがしなければならないのはcd /usr/share/phpmyadmincp config.sample.inc.php config.inc.phpだけです。

PhpMyAdmin Blowfishのシークレット変数の入力例

/*
 * This is needed for cookie based authentication to encrypt password in
 * cookie
 */
$cfg['blowfish_secret'] = '{^QP+-(3mlHy+Gd~FE3mN{gIATs^1lX+T=KVYv{ubK*U0V'; 
/* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

ファイルを保存して閉じます。

  • それでは、PMA用のtmpディレクトリmkdir tmpchown -R www-data:www-data /usr/share/phpmyadmin/tmpを作成します。最後のコマンドで、Apache Webサーバーはtmpディレクトリを所有し、その内容を編集できます。
9
PhoneixS

UBUNTU 16.04.3で動作します。 

usr/share/libraries/sql.lib.php

修正する 

|| (count($analyzed_sql_results['select_expr'] == 1)

|| ((count($analyzed_sql_results['select_expr']) == 1)

7
ibrahim.suez

ファイル「/usr/share/phpmyadmin/libraries/sql.lib.php」を編集します。 

"|| (count($analyzed_sql_results['select_expr'] == 1) 
&&($analyzed_sql_results['select_expr'][0] == '*'))) 
&& count($analyzed_sql_results['select_tables']) == 1;"

と: 

"|| (count($analyzed_sql_results['select_expr']) == 1) 
&& ($analyzed_sql_results['select_expr'][0] == '*') 
&& (count($analyzed_sql_results['select_tables']) == 1));"
4
Roland Mester

PhpMyAdmin 4.8.3にアップグレードしてください。これはPHP 7.2の互換性の問題を解決します 

2
HUGO POLANCO

私はwindowsを使っているときにこの問題を抱えていて上記の応答が私のためにそれを解決した、しかし私がlinux(ubuntu 18.04 LTS)に切り替えたとき私は同じ問題を抱えていた。 '/usr/share/phpmyadmin/libraries/sql.lib.php'。

このsql.lib.phpファイルは、私のubuntuでxamppを使用していたので、私の/ opt/lamppディレクトリの共有フォルダまたはphpmyadmin/librariesフォルダにはありませんでした。 (私は今のところ最新のインストールを使用しているので)セットアップ。

答えはまだ置き換えることです:(count($analyzed_sql_results['select_expr'] == 1) 

あり:(count($analyzed_sql_results['select_expr']) == 1

しかし探すべきファイルはSql.phpにある/opt/lampp/phpmyadmin/libraries/classes/Sql.phpです。

今後のアップデート、またはそれでも見つからない場合は、grep -r 'count($analyzed_sql_results' /opt/lampp/phpmyadminを使用してディレクトリ内の一致する文書を検索し、それに応じて編集してください。

2
KingNonso

上記の解決策をすべて試しましたが、うまくいきませんでした。

これを試して:-

必要なバージョンのPHP(私の場合は7.0)をインストールしてから、ターミナルに次のように入力します。

Sudo update-alternatives --config php

出力はこのようになります: -

enter image description here

選択番号を入力するだけで、任意のバージョンのPHPに切り替えることができます(私の場合1)。

これが他の人に役立つことを願っています - :)

2
Tridev Shrestha

|| ((count($analyzed_sql_results['select_expr']) == 1

これは私が614行目で変更したもので、phpmyadminはエラーなく動作します。 countの前に(が1つ、)の前に==が1つ必要です。それでおしまい。

1
Bikram Nath

phpmyadminを最新に更新する必要があるこれらのソリューションはどれも私にとってはうまくいきませんでした。こちらの手順に従ってください

https://askubuntu.com/questions/947805/how-to-upgrade-phpmyadmin-revisited

1
jafar690

このファイルを開く: '/usr/share/phpmyadmin/libraries/sql.lib.php'

Sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php

ctrl + wを押して検索します(count($ analysed_sql_results ['select_expr'] == 1))。

Find: count($analyzed_sql_results['select_expr'] == 1)

Replace With:  (count($analyzed_sql_results['select_expr']) == 1)

サーバーを再起動します

 Sudo service Apache2 restart
1
Kundan roy

これは、PHPMyAdminの以降のバージョンで修正されています。 Ubuntu 18.04.2のUbuntuソフトウェアリポジトリには、バージョン4.6.6.5が含まれていますが、現在は4.9.0.1です。 PHPMyAdminインストールを更新するとこの問題は修正されますが、その1行のコードを編集するよりも危険であることが判明する場合があります。これが、Ubuntuサーバーでの方法です。手順は、すべてのオペレーティングシステムで基本的に同じです(パスは異なります)。

  1. ダウンロード PHPMyAdmin
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.Zip
unzip phpMyAdmin-4.9.0.1-all-languages.Zip
  1. 古いPHPMyAdminインストールをバックアップします。
cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup
  1. 古いPHPMyAdminに新しいPHPMyAdminをドロップします
cd phpMyAdmin-4.9.0.1-all-languages
rm -r /usr/share/phpmyadmin/doc/html
cp -R * /usr/share/phpmyadmin/

それが機能することを確認します。うまくいかない場合は、うまくいきます。私自身の個人的な経験では、これを行った後、バージョン4.6.6.5がバグに悩まされているだけでなく、新しい4.9.0.1と比較して非常に遅いことも発見しました。速度の向上は、「WordPress」品質の私にとっては純粋な魔法でした。

1
NatoBoram

MariaDbとNginxを搭載したUbuntu 18.04では、ファイル/usr/share/phpmyadmin/libraries/sql.lib.phpを次のように更新して解決しました。

|| (count($analyzed_sql_results['select_expr']) == 1

@ Nguyenが述べた答えは500エラーを投げます:

FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected ')', expecting ';' in /usr/share/phpmyadmin/libraries/sql.lib.php on line 614"
1
cwhisperer

機能を交換して下さい:

function PMA_isRememberSortingOrder($analyzed_sql_results) {
return $GLOBALS['cfg']['RememberSorting']
    &&!(
        $analyzed_sql_results['is_count']
        || $analyzed_sql_results['is_export']
        || $analyzed_sql_results['is_func']
        || $analyzed_sql_results['is_analyse']
    )&&
    $analyzed_sql_results['select_from']&&
    (
        empty($analyzed_sql_results['select_expr'])||
        count($analyzed_sql_results['select_expr'])==1&&
        $analyzed_sql_results['select_expr'][0] == '*'
    )
    && count($analyzed_sql_results['select_tables']) == 1;

}

0
Arcaela

管理者特権で/usr/share/phpmyadmin/sql.lib.phpファイルを開き、関数PMA_isRememberSortingOrder()で次のコードを編集します。

  1. 最初のエラーを修正するための613行目:
    • || count($analyzed_sql_results['select_expr'] == 1)を置き換える
    • || (count($analyzed_sql_results['select_expr']) == 1)とは
  2. 〜614行目はおそらく続くだろう500エラーを修正するために:
    • && ($analyzed_sql_results['select_expr'][0] == '*')))を置き換える
    • && ($analyzed_sql_results['select_expr'][0] == '*'))とは

Apacheサーバを再起動してください:Sudo service Apache2 restart

PhpMyAdmin 4.6.6およびPHP 7.2を使用して、Ubuntu 18.04をベースにしたLinux Mint 19.1でテスト済み。

0
eka

それが単一の値であるかどうかにかかわらず、countを使用する必要はありません。これが最初の問題です。あなたはここでそれについてもっと読むことができます http://php.net/manual/en/function.count.php

今すぐcountはNULL、Boolean、String、Integerでは機能しません。これがここの理由であり、あなたは空にカウントを置き換えるだけでよいです。

私がしたことをチェック

&& ((empty($analyzed_sql_results['select_expr']))
        || (!empty($analyzed_sql_results['select_expr'])
            && ($analyzed_sql_results['select_expr'][0] == '*')))
0
Pawnesh Kumar

ファイル '/usr/share/phpmyadmin/libraries/sql.lib.php'を編集します。 

エラーのエラーを見る

./libraries/sql.lib.php#2038:PMA_isRememberSortingOrder(配列) ./ libraries/sql.lib.php#1984:PMA_executeQueryAndGetQueryResponse(

この行に移動して関数呼び出しを削除してください。

それは私のために働きます。

0
amrit

Confファイルのコード内のエラーが異なる可能性があるので(@Jacky Nguyen対@ĦΔŇĐŘΔŇΔҜҜΔ回答)、
一般的な解決策 答えはです。 
a)confファイルの条件ロジックを修正して意味のあるものにします。 
(x)またはb)正しい/現在のphpmyadminをインストールする

A)は

  1. エラーコードでファイルを開く
    端末の人々のために:Sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php
    一般の人々のために:Sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php

  2. 条件を見つける - 基本的に$analyzed_sql_results['select_expr']を検索する

  3. これで、このサブ配列が空かどうか、または値が "*"の要素が1つだけあるかどうかを確認することがロジックになります。

  4. だから基本的にブロック 
    && $analyzed_sql_results['select_from']の間
    && count($analyzed_sql_results['select_tables']) == 1
    このように見えるはずです

&& (
    empty($analyzed_sql_results['select_expr']) //the sub array is empty,
    || //or,
    (
        (count($analyzed_sql_results['select_expr']) == 1) //it has just 1 element
        && //and at the same time
        ($analyzed_sql_results['select_expr'][0] == '*') //the 1 element value is "*"
    )
)

これは、コードが正しくインデントされている場合、なぜコードをインデントして美しくするかの良い例です。

0
jave.web

こんにちは、私の同じ問題を絶対に解決します(インポート/エクスポートなど)。

バグPhpmyadmin [plugin_interface.lib.php] + Php7.2 + Ubuntu 16.04を修正しました

そう... ubuntu 18.04、mysql、php7.2の下:ターミナル:

Sudo gedit /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

次の行を見つける(ctrl + f):  

if ($options != null && count($options) > 0) {

私にとっては551行目でした 

次のように変更します。

if ($options != null && count((array)$options) > 0) {

変更を保存するためのCtrl + S

そしてターミナルで:Ctrl + Cでプロンプトを取り戻します...

および: Sudo systemctl restart Apache2

「私は新しいphpバージョンで考える。それはun配列型でcount()またはsizeof()を使うことができない。配列への力のパラメータはこのバグを解決する簡単な方法である、...

問題解決のための原作者に感謝します!私はそれを共有しようとします!

0
Máté Kiss

私の場合(Ubuntu 18.04)、上記の解決策はうまくいきませんでした。理由がわからなかった。それから私は私がまた他のいくつかの警告メッセージがあることに気づいた。調査の結果、PHPバージョン(7.2)がPHPMyAdminのバージョンと互換性がないことがわかりました。だから私がしたのは、後のバージョン(バージョン4.8.4)をアップグレードすることだけでした。

0

is_countable で導入された関数(PHP 7> = 7.3.0)

is_countable - 変数の内容が可算値であることを確認します 

次のようにしてこの関数を使ってください。 

is_countable ( $var ) 

ブール値を返します。詳細については http://php.net/manual/ja/function.is-countable.php をご覧ください。

0
Vipul

見てみましょう: https://devanswers.co/problem-php-7-2-phpmyadmin-warning-in-librariessql-count/

まず、編集する前にsql.lib.phpをバックアップしてください。 nanoでsql.lib.phpを編集します。

$ Sudo nano /usr/share/phpmyadmin/libraries/sql.lib.php

Ctrlキーを押しながらWキーを押して、検索します(count($ analyze_sql_results ['select_expr'] == 1)

((count($plicated_sql_results ['select_expr']))== 1)に置き換えます。

ファイルを保存して終了します。 (Ctrl + Xキーを押し、Yキーを押してからEnterキーを押します)

0
Messou

Phpmyadmin(4.6.6deb5)のバージョンでは、613行目を見つけ、count()括弧が適切に閉じられていないことに気付きました。次のリリースまでこれを一時的に修正するには、単に変更します。

|| (count($analyzed_sql_results['select_expr'] == 1)

に:

|| (count($analyzed_sql_results['select_expr']) == 1
0
J.T.