phpmyadmin - count (): параметр должен быть массивом или объектом, который реализует счетное

468

Я загрузил резервную копию в таблицу, открыв таблицу, я вижу это:

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?

alebal
источник
9
Тем, кто сталкивается с проблемой как: if ( count($articles)){..}в CodeIgniter , они должны использовать: if ( count((array)$articles)){..}как здесь
fWd82
2
у меня была эта проблема на phpmyadmin v4.6 я обновил до 4.8 он исчез. похоже, это как-то связано с mariadb 10.3, поскольку у меня не было этой проблемы на mariadb 10.1 с phpmyadmin 4.6
user889030
В моем случае проблема возникла, когда я установил php 7.3, в то время как мой phpMyAdmin был 4.7.1, я переключился обратно на php 7.0 и он работает нормально, или вы должны установить версию phpMyAdmin, совместимую с php 7.3
vinsa

Ответы:

877

Отредактируйте файл /usr/share/phpmyadmin/libraries/sql.lib.phpс помощью этой команды:

sudo nano +613 /usr/share/phpmyadmin/libraries/sql.lib.php

В строке 613 функция count всегда принимает значение true, поскольку после нее закрывающая скобка отсутствует $analyzed_sql_results['select_expr']. Выполнение приведенных ниже замен решает эту проблему, тогда вам нужно будет удалить последние закрывающие скобки в строке 614, поскольку теперь они являются дополнительными скобками.

Заменить:

((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr'] == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*')))

С:

((empty($analyzed_sql_results['select_expr']))
    || (count($analyzed_sql_results['select_expr']) == 1)
        && ($analyzed_sql_results['select_expr'][0] == '*'))

Перезагрузите сервер apache:

sudo service apache2 restart
Джеки Нгуен
источник
95
Невероятно. Работает на Ubuntu 18.04 с phpmyadmin, установленным с помощью apt.
PNDA
7
Работало так, что я мог выбирать таблицы, но возвращалась ошибка, когда я пытался экспортировать Db
Alperian
6
Об ошибке
Герберт,
30
Если вы столкнулись с подобной проблемой при экспорте в БД, вам нужно отредактировать /usr/share/phpmyadmin/libraries/plugin_interface.lib.php строку 551 из if ($ options! = Null && count ($ options)> 0) {в _if ($ options! = null && count ((array) $ options)> 0) { Может быть интересно для @alperian и других
Бернд Шухмахер
5
Это не сработало для меня. Я получил Error in processing request Error code: 500 Error text: Internal Server Error. Решение @Chandra Nakka устранило мою проблему.
Джи
473

Самый простой метод:

Просто запустите приведенную ниже командную строку в терминале и вернитесь в 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 .

Теперь работает нормально :)

Чандра Накка
источник
39
Работает в Ubuntu 18.04 в августе 2018 года :)
Луис Гонсалвес
4
У меня не работало в Ubuntu 16.04
С.П. Сингх
2
Работает как очарование
Rameez Rami
2
Работает на Ubuntu 19.04. Спасибо
Murume
4
Небольшая хитрость в нано состоит в том, что вы можете печатать nano +613 filename, чтобы перейти непосредственно к конкретной строке.
SteffenNielsen
102

Я нашел это PHP 7.2 count () - ошибка SYNTAX в 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 ($ analysis_sql_results ['select_expr'] ) == 1) && ($ analysis_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;
 }
loquace
источник
В следующей строке вы также должны будете удалить один из заключительных паратезов в конце.
флоппи
Спасибо. Как такая ошибка была выпущена с помощью подходящего пакета? Просто немного смешно.
Джош Морел
1
@floppes Нет, это не правильно. Вы НЕ ДОЛЖНЫ удалять этот заключительный паратез. Я проверил ваш путь, и это вызвало server error. Ответ @ loquace должен быть принят.
долго
Спасибо за разъяснение для нас и использование жирного шрифта там, где это необходимо. Ни 1-й, ни 2-й ответы не были достаточно ясны для меня, потому что они не сказали, что делают. Редактирование на нано не то же самое, что gedit или что-то еще.
логика
70

протестирован на Debian, должен работать на Ubuntu:

1.) Сначала загрузите последний файл phpMyadmin.

2.) Удалить (сделать резервную копию) все предыдущие версии файла, расположенного в /usr/share/phpmyadminкаталоге.

3.) Распакуйте в /usr/share/phpmyadmin/каталог все файлы последней версии phpmyadmin.

4.) Изменить файл libraries/vendor_config.phpи изменить строку:

define('CONFIG_DIR', '');

в

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

а также

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

в

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

5.) Перезапустите сервер Apache и все готово.

shibby
источник
3
Работает на Ubuntu 16.04
pjehan
7
Работает над Ubuntu 18.04
Simon Epskamp
5
Ubuntu 18.04, phpMyAdmin 4.8.0.1 - мне нужно былоmkdir /usr/share/phpmyadmin/tmp; chgrp www-data tmp; chmod g+w tmp;
billynoah
Ubuntu 16.04 просто распаковывает его для работы /usr/share/phpmyadmin. Не нужно было следовать последующим шагам.
tushar.dahiwale
@billynoah То же самое здесь с новой установкой. Я создал каталог tmp, установил его на 777, перезапустил Apache, вышел из phpMyAdmin и ошибки исчезли.
JScarry
38

Редактировать файл :'/usr/share/phpmyadmin/libraries/sql.lib.php'

Заменить :(count($analyzed_sql_results['select_expr'] == 1)

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

это сработало для меня

Срикант Поннуру
источник
Это сработало для меня, основываясь на условии, что исправление внутренней ошибки 500 было решено, но старая проблема с ошибкой "phpmyadmin - count (): параметр должен быть массивом или объектом, реализующим счетное средство", не решена.
shashik493
кажется, это работает для меня, но кто-нибудь знает, почему это произошло? Мой phpmyadmin работал просто отлично, а потом внезапно я вошел в систему сегодня, и, похоже, эта проблема возникла? Ubuntu 18.04.2 LTS
wheelmanx
Работает на UBuntu 18.04, wing Nginx, php 7.2
PHPer
34
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
Калима
источник
Это сработало для меня 18.04, спасибо! Не нужно даже перезагружать сервер - PHP интерпретируется как «живой».
Желе Вераа
@JelleVeraa, ты особый случай, хе-хе;)
kaleem
32

Если у кого-то есть похожая ошибка на странице экспорта БД (у меня была эта проблема в Ubuntu 18.04), тогда замените строку 551 в файле /usr/share/phpmyadmin/libraries/plugin_interface.lib.phpс кодом

if ($options != null && (is_array($options) || $options instanceof Countable) && count($options) > 0) {
jbator
источник
Это также помогло мне, но я должен был сделать и ответ, и это. Ubuntu 18.04
Karuhanga
2
Это сработало, чтобы избавиться от сообщений об ошибках, но я думаю, что тогда все операторы if избегаются, и я ничего не получаю в моем экспорте базы данных (с кучей ошибок, отображаемых внизу после обновления страницы после завершения базы данных экспорт с крошечным следом файла)
Уоррен Ван
Поцелуй, целуй, я люблю тебя.
Ноа Красер
1
На Debian 9 замените строку 551: if ($options != null && count($options) > 0) {на: if ($options != null) {тогда вы можете экспортировать
BitDEVil2K16
Это единственный, который работал на 18.04
TeT Psy
24

Выполните следующие шаги в Ubuntu-18.04:

Шаг 1) найдите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 ($ analysis_sql_results)
     {
        вернуть $ GLOBALS ['cfg'] ['RememberSorting']
            &&! ($ Analyzed_sql_results [ 'is_count']
                || $ analyzed_sql_results [ 'is_export']
                || $ analyzed_sql_results [ 'is_func']
                || $ analyzed_sql_results [ 'is_analyse'])
            && $ analysis_sql_results ['select_from']
            && ((пусто ($ analysis_sql_results ['select_expr']))
                || (count ($ analysis_sql_results ['select_expr'] == 1)
                    && ($ analysis_sql_results ['select_expr'] [0] == '*')))
            && count ($ analysis_sql_results ['select_tables']) == 1;
     }

Шаг 4) Замените вышеуказанную функцию на:

     функция PMA_isRememberSortingOrder ($ analysis_sql_results)
     {
        вернуть $ GLOBALS ['cfg'] ['RememberSorting']
            &&! ($ Analyzed_sql_results [ 'is_count']
                || $ analyzed_sql_results [ 'is_export']
                || $ analyzed_sql_results [ 'is_func']
                || $ analyzed_sql_results [ 'is_analyse'])
            && $ analysis_sql_results ['select_from']
            && ((пусто ($ analysis_sql_results ['select_expr']))
                || (count ($ analysis_sql_results ['select_expr']) == 1)
                    && ($ analysis_sql_results ['select_expr'] [0] == '*'))
            && count ($ analysis_sql_results ['select_tables']) == 1;
     }

Шаг 4) Сохраните и закройте файл и команду ниже на терминале

sudo /usr/sbin/pma-secure

Шаг 5) sudo service mysql reload

Шаг 6) sudo service apache2 reload

Это работает для меня .. Goodluck

Neoark Software
источник
Перезагрузка MySQL и apache не требуется.
Таксиазума
Я получил это сообщение после изменения файла: "- root @ Lalla: ~ # / usr / sbin / pma-secure - Защита установки phpMyAdmin ... - Сценарий установки не сможет записать конфигурацию. - root @ Lalla: ~ # "
кл-р
22

откройте этот файл: '/usr/share/phpmyadmin/libraries/sql.lib.php'

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

нажмите ctrl + w для поиска (count ($ analysis_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

Кроме того, если вы все еще сталкиваетесь с той же проблемой, то сделайте следующее.

открыть этот файл /usr/share/phpmyadmin/libraries/plugin_interface.lib.php

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

Найти: if ($ options! = Null && count ($ options)> 0) {

Ctrl+w : if ($options != null && count($options) > 0) {

заменить следующим кодом

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

Теперь сохраните и перезагрузите сервер

sudo /etc/init.d/apache2 restart
Кундан Рой
источник
Вы просто добавили фигурную скобку. Но спасибо. Я удалил лишнюю скобку в конце строки
redestructa
У меня установлен xampp на моем Mac, я не могу найти папку / usr / share / phpmyadmin и, следовательно, '/usr/share/phpmyadmin/libraries/sql.lib.php' этот подарок существует для меня, можете ли вы помочь в этом?
Саураб Верма
18

Я думаю, что лучший вариант - обновить Phpmyadmin до версии, в которой это уже исправлено.

Пока он не будет опубликован как deb, вы можете сделать это как в ответе @ crimson-501, который я скопирую ниже:

  • Ваш первый шаг должен установить PMA (PhpMyAdmin) из официального репозитория Ubuntu: apt-get install phpmyadmin.
  • Затем перейдите в каталог USR / доли: cd /usr/share.
  • В- третьих, удалить каталог PhpMyAdmin: rm -rf phpmyadmin.
  • Теперь нам нужно загрузить последнюю версию РМА на нашей системе (обратите внимание , что вам нужно Wget: apt-get install wget): wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-english.zip" Позвольте мне объяснить аргументы этой команды, -Р определяет путь и «link.zip» в настоящее время (7/17/18 ) последняя версия PMA. Вы можете найти эти ссылки ЗДЕСЬ .
  • Для следующего шага вам нужно распаковать ( apt-get install unzip): unzip phpMyAdmin-4.9.4-english.zip. Мы только что распаковали PMA, теперь мы перенесем его в последний дом.
  • Давайте использовать команду cp(копировать), чтобы переместить наши файлы! Обратите внимание, что мы должны добавить -rаргумент, так как это папка. cp -r phpMyAdmin-4.9.4-english phpmyadmin,
  • Теперь пришло время навести порядок rm -rf phpMyAdmin-4.9.4-english.

Продолжай читать!

Теперь вы можете заметить две ошибки после входа в PMA.

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/phpmyadmin& cp 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! */

Теперь сохраните и закройте файл.

  • Теперь мы создадим каталог tmp для PMA: mkdir tmp& chown -R www-data:www-data /usr/share/phpmyadmin/tmp. Последняя команда позволяет веб-серверу Apache владеть каталогом tmp и редактировать его содержимое.
PhoneixS
источник
Этот ответ был невероятно полезным! Решил проблему для меня! Спасибо! PS: Вы можете найти генераторы blowfish онлайн.
lucbas
И решение по этой ссылке: devanswers.co/manually-upgrade-phpmyadmin следует аналогичному плану, за исключением того, что заменяет шаги
blowfish
Это гораздо лучшее решение по сравнению с редактированием файлов конфигурации более старых версий.
Андромеда
18

Ubuntu 18.04 LTS

Это шаги, которые работали для меня. Огромное спасибо William Desportes за автоматическое обновление своего Ubuntu PPA.

Шаг 1 ( из публикации Уильяма Деспорта )
$sudo add-apt-repository ppa:phpmyadmin/ppa

Шаг 2
$sudo apt-get --with-new-pkgs upgrade

Шаг 3
$sudo service mysql restart

Если у вас есть проблемы с перезапуском mysql, вы также можете перезапустить с помощью следующей последовательности
$ sudo service mysql stop;
$sudo service mysql start;

C13L0
источник
2
Решает проблему на Ubuntu 18.04 LTS. Должен быть принятый ответ.
bgaze
17

Попробуйте заменить эту функцию в файле: /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;
}
Александр П.
источник
Спасибо! в этой строке я ошибся в конце, когда у меня было 3 закрывающих скобки, мне нужно было только 2 закрывающих скобки && ($ analysis_sql_results ['select_expr'] [0] == '*')). Работал над phpmyadmin 4.6, php 7.2.10, ubuntu 18.4.1
Wang'l Pakhrin
15

Ubuntu 18.10 (декабрь 2018 г.)

Строки 613, 614, 615 заменить на:

        || count($analyzed_sql_results['select_expr']) == 1
            && ($analyzed_sql_results['select_expr'][0] == '*'))
    && count($analyzed_sql_results['select_tables']) == 1;
olealgo
источник
Это работает для меня .. Не нужно обновлять MySQL или что-нибудь ... Спасибо @ole
Nitin Vaghani
15

Работа для меня .. 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.

Выполнено!!!

Ucup Timposu
источник
1
В строке 613, измените на|| (count($analyzed_sql_results['select_expr']) == 1
tnductam
11

Для моей версии phpmyadmin (4.6.6deb5) я нашел строку 613 и понял, что скобки count () не были закрыты должным образом. Чтобы исправить это временно до следующего выпуска, просто измените:

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

чтобы:

|| (count($analyzed_sql_results['select_expr']) == 1
JT
источник
Отсутствует скобка для закрытия вызова функции || (count ($ analysis_sql_results ['select_expr']) == 1 - правильное утверждение
Ruberandinda Patience
Путь к файлу "/usr/share/phpmyadmin/libraries/sql.lib.php" для тех, кто не знает, где его найти.
Али Имран
9

Это исправлено в более поздних версиях PHPMyAdmin. Хранилища программного обеспечения Ubuntu для Ubuntu 18.04.2 содержат версию 4.6.6.5, в то время как они в настоящее время находятся в 4.9.0.1. Обновление установки PHPMyAdmin решит эту проблему, но может оказаться более рискованным, чем просто редактирование одной строки кода. Вот как я это сделал на своем сервере 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.

NatoBoram
источник
Я бы поменял порядок 1 и 2, и перед wget я бы сделал cd / tmp, но кроме этого, отлично, спасибо.
Крис
Это работает для меня, спасибо за простое решение!
uestcfei
8

Работает на UBUNTU 16.04.3 Просто открыть

USR / доли / библиотеки / sql.lib.php

Modify

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

к

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

ibrahim.suez
источник
5

Обновление до phpMyAdmin 4.8.3. это решает проблемы совместимости PHP 7.2

HUGO POLANCO
источник
5

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

Это то, что я изменил в строке 614, и phpmyadmin работает без ошибок. Нужен один (до подсчета, а один )до ==. Вот и все.

Бикрам Натх
источник
4

Изменить файл '/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));"
Роланд Местер
источник
3

Привет следующее решить мою проблему абсолютно (импорт / экспорт и так далее):

Исправить ошибку 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. Он не может использовать count () или sizeof () с типом un array. Форсировать параметр в массив - это простой способ решить эту ошибку, ...»

Спасибо за оригинального автора для решения проблемы! Я пытаюсь поделиться этим!

Мат поцелуй
источник
3

Откройте /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 .

Протестировано на Linux Mint 19.1 на основе Ubuntu 18.04, с PhpMyAdmin 4.6.6 и PHP 7.2.

elenche
источник
3

Я испробовал все вышеперечисленное решение, но у меня не получилось.

Попробуй это:-

Установите требуемую версию PHP (в моем случае 7.0), а затем в терминале введите

sudo update-alternatives --config php

Вывод будет таким:

введите описание изображения здесь

Затем вы можете переключиться на любую версию PHP, просто введя номер выбора (в моем случае 1).

Надеюсь, что это может помочь другим - :)

Тридев Шреста
источник
2

У меня была эта проблема при использовании Windows, и ответы выше решили ее для меня, однако, когда я перешел на Linux (Ubuntu 18.04 LTS), у меня была та же проблема, и я не мог понять, как ее решить, потому что я не видел файл '/usr/share/phpmyadmin/libraries/sql.lib.php.

Этот файл sql.lib.php не находился в общей папке или в папке phpmyadmin / library моего каталога / opt / lampp - поскольку я использовал xampp в своей Ubuntu. На основе обновления, сделанного для установки xampp (потому что я использовал последнюю установку на данный момент).

Ответ еще заменить: (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для поиска подходящих документов в вашем каталоге и соответственно измените

KingNonso
источник
2

Заменить функцию:

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;
}
Arcaela
источник
2

Редактировать файл /usr/share/phpmyadmin/libraries/sql.lib.php

Увидеть ошибку в вашей ошибке

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

перейдите на эту строку и удалите вызов функции.

Меня устраивает.

Amrit
источник
2

Я вижу, что вы все редактируете или обновляете из наших файлов

Для тех, кто хочет автоматические обновления, вы можете использовать наш Ubuntu PPA

sudo add-apt-repository ppa: phpmyadmin / ppa

А для пользователей Debian вам нужно будет дождаться следующей версии Debian или использовать PPA

Ubuntu 20 имеет phpMyAdmin 4.9 или более позднюю версию

Проблема Debian на нашем трекере

Счетные проблемы на нашем трекере

TLDR Обновление до последней версии 4.9 или 5.0 для решения этой проблемы.

Уильям Деспортес
источник
2

Это хорошо сработало для меня в Ubuntu 18.04 .

Открыть файл sql.lib.php

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

Замените этот неправильный код:

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

С этим:

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

Сохраните файл.

Перезагрузите сервер с помощью:

sudo service apache2 restart

И обновить PhpMyAdmin

FEUJIO Мари Тереза
источник
1

В Ubuntu 18.04 с MariaDb и Nginx я решил эту проблему, обновив файл /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"
cwhisperer
источник