На сервере обнаружены некоторые ошибки phpmyadmin

This error is caused by a line of code in /usr/share/phpmyadmin/libraries/sql.lib.php.

It seems when I installed phpMyAdmin using apt, the version in the repository (phpMyAdmin v4.6.6) is not fully compatible with PHP 7.2. There is a newer version available on the official website (v4.8 as of writing), which fixes these compatibility issues with PHP 7.2.

You can download the latest version and install it manually or wait for the repositories to update with the newer version.

Alternatively, you can make a small change to sql.lib.php to fix the error.

Firstly, backup sql.lib.php before editing.

sudo cp /usr/share/phpmyadmin/libraries/sql.lib.php /usr/share/phpmyadmin/libraries/sql.lib.php.bak

Edit sql.lib.php using vi:

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

Using nano:

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

Press CTRL + W (for nano) or ? (for vi/vim) and search for:

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

Replace it with:

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

Save file and exit. (Press CTRL + X, press Y and then press ENTER for nano users / hit ESC then type :wq and press ENTER)

Как исправить ошибку в phpMyAdmin. «count(): Parameter must be an array or an object that implements Countable»

При установке phpMyAdmin на сервер с Debian 9 с установленной версией php7.3 может появиться ошибка count(): Parameter must be an array or an object that implements Countable. Возможно, в ближайшем будущем разработчики устранят эту ошибку, внеся исправления в официальный дистрибутив, но до сих пор для того, чтобы она не мешала работе, приходится устранять её ручками. Делать это достаточно просто. Как? Рассмотрим ниже.

Данная ошибка выдаётся в виде предупреждения, которое перекрывает весь экран:

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

Жалобы на работу скрипта plugin_interface.lib.php:

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

Номер строки может варьироваться от версии phpMyAdmin.

Для того, чтобы продолжить работу, можно просто нажать на кнопку «Игнорировать всё» или «Игнорировать», но это не иправит ситуации и диалоговое окно:

На сервере обнаружены некоторые ошибки!
Пожалуйста, посмотрите вниз текущего окна.

всё равно будет появляться. Для того, чтобы данное сообщение не возникало, нужно внести небольшие правки в два файла phpMyAdmin в исходный код на сервере.

Исправления в файле sql.lib.php

Первое исправление нужно внести в файл /usr/share/phpmyadmin/libraries/sql.lib.php:

Находим в коде строку

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

и вместо неё вставляем строку

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

Исправления в файле plugin_interface.lib.php

Второе исправление нужно внести в файл /usr/share/phpmyadmin/libraries/plugin_interface.lib.php:

Находим в коде строку

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

и вместо неё вставляем строку

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

Резюме

После внесённых правок phpMyAdmin продолжает работать без ошибок:

Warning in ./libraries/sql.lib.php#551

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Выберите, то, чем пользуетесь чаще всего:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
Notice IN .librariesDisplayResults.class.php#1166
 Undefined offset: 39
 
Backtrace
 
.librariesDisplayResults.class.php#4264: PMA_DisplayResults->_getTableHeaders(
array,
array,
array,
array,
array,
BOOLEAN FALSE,
)
.librariesSQL.lib.php#1769: PMA_DisplayResults->getTable(
object,
array,
array,
)
.librariesSQL.lib.php#2049: PMA_getHtmlForSqlQueryResultsTable(
object,
string './themes/original/img/',
NULL,
array,
BOOLEAN TRUE,
string '3',
INTEGER 3,
NULL,
object,
array,
)
.librariesSQL.lib.php#2245: PMA_getQueryResponseForResultsReturned(
object,
array,
string 'website',
string 'users_website',
NULL,
NULL,
object,
string './themes/original/img/',
string '3',
INTEGER 3,
string 'SELECT * FROM `users_website` LIMIT 0, 50 ',
NULL,
NULL,
NULL,
NULL,
NULL,
string 'SELECT * FROM `users_website`',
NULL,
)
.librariesSQL.lib.php#2125: PMA_executeQueryAndGetQueryResponse(
array,
BOOLEAN TRUE,
string 'website',
string 'users_website',
NULL,
NULL,
NULL,
BOOLEAN FALSE,
NULL,
NULL,
NULL,
string '',
string './themes/original/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `users_website`',
NULL,
NULL,
)
.SQL.php#201: PMA_executeQueryAndSendQueryResponse(
array,
BOOLEAN TRUE,
string 'website',
string 'users_website',
NULL,
NULL,
NULL,
BOOLEAN FALSE,
NULL,
NULL,
NULL,
string '',
string './themes/original/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `users_website`',
NULL,
NULL,
)

Эта ошибка вызвана строкой кода в /usr/share/phpmyadmin/libraries/sql.lib.php.

Кажется, когда я установил phpMyAdmin с помощью apt, версия в хранилище (phpMyAdmin v4.6.6) не полностью совместима с PHP 7.2. На официальном веб-сайте доступна более новая версия (на момент написания v4.8), которая устраняет эти проблемы совместимости с PHP 7.2.

Вы можете загрузить последнюю версию и установить ее вручную или дождаться обновления репозиториев до более новой версии.

Кроме того, вы можете внести небольшое изменение в sql.lib.php, чтобы исправить ошибку.

Во-первых, сделайте резервную копию sql.lib.php перед редактированием.

sudo cp /usr/share/phpmyadmin/libraries/sql.lib.php /usr/share/phpmyadmin/libraries/sql.lib.php.bak

Отредактируйте sql.lib.php. Используя vi:

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

Используя nano:

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

Нажмите CTRL + W (для нано) или ? (для vi/vim) и найдите (count($analy_sql_results[‘select_expr’] == 1)

Замените его на ((count($analysis_sql_results[‘select_expr’]) == 1)

Сохраните файл и выйдите. (Нажмите CTRL + X, Нажмите Y а затем нажмите ENTER для нано пользователей / хит ESC затем введите :wq и нажмите ENTER)

Прежде всего, mysql для меня новинка, поэтому я понятия не имею, как и что делать. Я видел много обучающих видео о mysql и php. Итак, моя проблема в том, что когда я вхожу в свой phpmyadmin и открываю базу под названием «Логин» и таблицу под названием «пользователи», появляется сообщение об ошибке со следующими строками: «На сервере обнаружены некоторые ошибки! Пожалуйста, посмотрите в нижней части окна «. Я проверил нижнюю часть окна и увидел огромное красное окно с предупреждением со следующими строками: Есть идеи, как решить эту проблему? Кстати, я использую Linux Mint 19.3 Cinnamon.

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

Backtrace

./libraries/sql.lib.php#2128: PMA_isRememberSortingOrder(array)
./libraries/sql.lib.php#2079: PMA_executeQueryAndGetQueryResponse(
array,
boolean true,
string 'Login',
string 'users',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/pmahomme/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `users`',
NULL,
NULL,
)
./sql.php#221: PMA_executeQueryAndSendQueryResponse(
array,
boolean true,
string 'Login',
string 'users',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
string '',
string './themes/pmahomme/img/',
NULL,
NULL,
NULL,
string 'SELECT * FROM `users`',
NULL,
NULL,
)

2 ответа

Лучший ответ

Прежде всего перед редактированием сделайте резервную копию sql.lib.php.

sudo cp /usr/share/phpmyadmin/libraries/sql.lib.php /usr/share/phpmyadmin/libraries/sql.lib.php.backup

Или вы можете сделать это вручную без командной строки. Зайдите в каталог папки /usr/share/phpmyadmin/libraries, найдите в нем, скопируйте мимо sql.lib.php и переименуйте sql.lib.php.backup

После этого

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

Нажмите CTRL + W, найдите этот код (count($analyzed_sql_results['select_expr'] == 1) и замените его на ((count($analyzed_sql_results['select_expr']) == 1) после sudo service apache2 restart. Здесь ошибка первого braket ().


1

Martin
24 Ноя 2020 в 12:50

Из этого я помню, что это проблема со знанием, которая может произойти, если у вас есть старая версия phpmyadmin и какая-то новейшая версия php. Это ваш сервер и у вас есть root права? Если да, вы можете обновить версии или просто внести небольшие исправления в код phpmyadmin. Если это не ваш сервер, попросите поддержку обновить версии или исправить ошибку вручную.


0

Ivan Pruchai
24 Ноя 2020 в 11:01

Понравилась статья? Поделить с друзьями:
  • На сервере возникла ошибка приложения что это
  • На сервере возникла ошибка приложения текущая пользовательская настройка ошибок
  • На сервер 1с предприятия произошла неисправимая ошибка
  • На семинаре автор изложил главную суть этой книги ошибка
  • На сегодняшний день ошибка или нет