phpmyadmin - count (): Параметр повинен бути масивом або об'єктом, що реалізує лічильник


467

Я завантажив резервну копію в таблицю, відкриваючи таблицю, я бачу це:

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?


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

Відповіді:


875

Редагуйте файл /usr/share/phpmyadmin/libraries/sql.lib.phpза допомогою цієї команди:

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

У рядку 613 функція підрахунку завжди оцінюється як істинна, оскільки після цього немає дужок, що закриваються $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.
ПНДА

7
Я працював над тим, що я міг вибрати таблиці, але помилка повернулася, коли я намагався експортувати Db
Alperian,

6
Повідомлялося про помилку
Герберт

30
Якщо ви стикаєтесь з подібною проблемою при експорті БД, вам потрібно відредагувати /usr/share/phpmyadmin/libraries/plugin_interface.lib.php, рядок 551 з if ($ options! = Null && count ($ options)> 0) {to _if ($ options! = null && count ((масив) $ options)> 0) { Можливо, буде цікаво для @alperian та інших
Bernd Schuhmacher

5
Це не спрацювало для мене. Я отримав Error in processing request Error code: 500 Error text: Internal Server Error. Рішення @Chandra Nakka виправило мою проблему.
Jee

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 року :)
Luiz Gonçalves,

4
Не працювало для мене на Ubuntu 16.04
SP Singh

2
Діє як шарм
Рамез Рамі

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

Змінити рядок : перемістити круглі дужки до ==

|| ( (кол. ($ analy_sql_results ['select_expr'] ) == 1) && ($ analy_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;
 }

У наступному рядку вам також доведеться видалити один із завершальних парантезів в кінці.
флоппес

Дякую. Як така помилка була звільнена за допомогою влучного пакета встановлення? Просто трохи смішно.
Джош Морель

1
@floppes Ні, це невірно. Ви НЕ БУДЕТЕ видаляти цей парантез, що завершується. Я перевірив твій шлях і це спричинило server error. @ loquace повинна відповісти на відповідь.
Довгий

Дякуємо, що прописали його для нас та використовували жирний шрифт там, де це потрібно. Ні перша, ні друга відповіді не були для мене досить чіткими, оскільки вони не сказали, що роблять. Редагування на нано - це не те саме, що gedit чи інше.
логиблок

71

перевірена на 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 і виконано.


3
Працює над Ubuntu 16.04
пехань

7
Працює над Ubuntu 18.04
Саймон Епскамп

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

це працювало для мене


Він працював для мене на основі умови u мають виправити внутрішню помилку 500, було вирішено, але стара проблема помилки "phpmyadmin - count (): Параметр повинен бути масивом або об'єктом, що реалізує лічильник", не вирішено.
shashik493

це, здається, працює для мене, але чи хтось знає, чому це сталося? Мій phpmyadmin працював просто чудово, і раптом я сьогодні ввійшов у систему, і, схоже, виникло це питання? Ubuntu 18.04.2 LTS
wheelmanx

Працює на UBuntu 18.04, крило 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 інтерпретується як «живе».
Jelle Veraa

@JelleVeraa, ти особливий випадок hehehe;)
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) {

Це мені теж допомогло, але мені довелося зробити і відповідь, і це. Ubuntu 18.04
Каруханга

2
Це спрацювало, щоб позбутися від повідомлень про помилки, але я думаю, що потім уникне твердження if все разом, і я не отримую нічого в експорті своєї бази даних (з купою помилок, що з’являються внизу після оновлення сторінки після заповнення бази даних експорт із крихітним відбитком файлів)
Warren Wang

Поцілуй, поцілуй, я тебе люблю.
Ной Крассер

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 ($ analy_sql_results)
     {
        повернути $ GLOBALS ['cfg'] ['RememberSorting']
            &&! ($ analy_sql_results ['is_count']
                || $ analy_sql_results ['is_export']
                || $ analy_sql_results ['is_func']
                || $ analy_sql_results ['is_analyse'])
            && $ analy_sql_results ['select_from']
            && ((порожньо ($ analy_sql_results ['select_expr']))
                || (кол. ($ analy_sql_results ['select_expr'] == 1)
                    && ($ analy_sql_results ['select_expr'] [0] == '*')))
            && count ($ analy_sql_results ['select_tables']) == 1;
     }

Крок 4) Замініть вищевказану функцію на:

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

Крок 4) Зберегти та закрити файл та команду нижче на терміналі

sudo /usr/sbin/pma-secure

Крок 5) sudo service mysql reload

Крок 6) sudo service apache2 reload

Це працює для мене .. Goodluck


Перезавантаження MySQL та apache не потрібні.
Tacsiazuma

Я отримав це повідомлення після модифікації файлів: "- root @ Lalla: ~ # / usr / sbin / pma-secure - Забезпечення установки phpMyAdmin ... - Сценарій налаштування не зможе записати конфігурацію. - root @ Lalla: ~ # "
cl-r

22

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

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

натисніть ctrl + w для пошуку (count ($ analy_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

Знайдіть: якщо ($ 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, я не міг знайти / usr / share / phpmyadmin папку, а отже '/usr/share/phpmyadmin/libraries/sql.lib.php' цей дозант для мене існує, чи можете ви допомогти у цьому?
Саурах Верма

18

Я думаю, що найкращий варіант - оновити Phpmyadmin до версії, яка вже виправлена.

Поки вона не буде опублікована як деб, ви можете це робити, як у відповіді @ 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(copy) для переміщення наших файлів! Зауважте, що ми повинні додати -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 Secret Variable Entry:

/*
 * 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 та редагувати його вміст.

Ця відповідь була неймовірно корисною! Вирішили проблему для мене! Дякую! PS: В Інтернеті ви можете знайти генераторів мошок.
lucbas

І рішення за цим посиланням: devanswers.co/manually-upgrade-phpmyadmin дотримується аналогічного плану, за винятком того, як заміняє кроки
gwideman

Це набагато краще рішення порівняно з редагуванням конфігураційних файлів старих версій.
andromeda

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 дужки закриття && ($ analy_sql_results ['select_expr'] [0] == '*')). Працював над phpmyadmin 4.6, php 7.2.10, ubuntu 18.4.1
Wang'l Pakhrin

17

Ubuntu 18.04 LTS

Це ті кроки, які працювали для мене. Багато, велике спасибі Вільяму Деспорту за надання автоматичних оновлень своїх 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;


2
Вирішує проблему на Ubuntu 18.04 LTS. Повинна бути прийнята відповідь.
бгаз

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;

Для мене це працює. Не потрібно оновлювати mysql чи що-небудь ... Спасибі @ole
Нітін Ваґані

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.

Готово !!!


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

Для закриття виклику функції || були відсутні дужки (підрахунок ($ analy_sql_results ['select_expr']) == 1 - це правильне твердження
терпіння

шлях до файлу "/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" якості.


Я б перейшов на порядок 1 і 2, і перед wget я би cd / tmp, але окрім цього, відмінно, дякую.
Кріс

Це працює для мене, дякую за просте рішення!
uestcfei

8

Працює на UBUNTU 16.04.3 Просто відкрити

usr / share / library / sql.lib.php

модифікувати

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

До

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


5

Оновлення до phpMyAdmin 4.8.3. це вирішує проблеми сумісності PHP 7.2


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 для повернення promt ...

і: sudo systemctl restart apache2

"Я думаю, що в новій версії php. Я не можу використовувати count () або sizeof () з типом un масив. Параметр Force для масиву - це простий спосіб вирішити цю помилку, ..."

Дякую оригінальному автору за вирішення проблеми! Я намагаюся цим поділитися!


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.


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 / librarys в моєму каталозі / 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для пошуку відповідних документів у вашому каталозі та відредагуйте відповідно


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;
}

2

Редагувати файл /usr/share/phpmyadmin/libraries/sql.lib.php

Побачте помилку про вашу помилку

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

перейдіть до цієї лінії та видаліть виклик функції.

Це працює для мене.


2

Я бачу, що ви все редагуєте або оновлюєте з наших файлів

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

sudo add-apt-repository ppa: phpmyadmin / ppa

А для користувачів Debian вам потрібно буде почекати наступної версії Debian або використовувати PPA

Ubuntu 20 має phpMyAdmin 4.9 або новішу версію

Випуск Debian на нашому трекері

Вирішення проблем у нашому трекері

Оновлення TLDR до останньої версії 4.9 або 5.0 для вирішення цієї проблеми.


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"

1

Як помилка в коді в конфе файлу може змінюватися (@Jacky Nguyen проти @ ĦΔŇĐŘΔ ŇΔҜҜΔ відповідей), загальне рішення відповіді був би а) виправити умова логіки в конфе файл має сенс


(х) або б) Встановити виправлений / ток phpmyadmin

Щодо а)

  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 "*"
    )
)

Це хороший приклад того, чому відступати і прикрашати свій код, якщо він буде відзначений правильно, я вважаю, що цього ніколи не станеться, або, принаймні, було б легше знайти.


У мене на комп'ютері встановлено xampp, я не міг знайти / usr / share / phpmyadmin папку, а отже '/usr/share/phpmyadmin/libraries/sql.lib.php' цей дозант для мене існує, чи можете ви допомогти у цьому?
Саурах Верма

@SaurabhVerma здійснити пошук файлів sql.lib.php або для папки phpmyadmin - якщо у вас є phpmyadmin, його потрібно встановити десь
jave.web
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.