phpmyadmin - Count (): Tham số phải là một mảng hoặc một đối tượng thực hiện Countable


468

Tôi đã tải bản sao lưu lên một bảng, mở bảng tôi thấy điều này:

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)

Bên trong phpMyAdmin ...

PHP là 7.2, máy chủ là Ubuntu 16.04, được cài đặt ngày hôm qua.

Tìm kiếm tôi thấy rằng một số người có lỗi này trong mã của họ, nhưng tôi không tìm thấy ai nhận được nó trong phpMyAdmin ...

Tôi nên làm gì? Đó có phải là lỗi của tôi không? Một lỗi phpmyadmin? chờ cập nhật? Tôi quay lại PHP 7.1?


9
Những người đang gặp phải vấn đề như: if ( count($articles)){..}trong CodeIgniter , họ nên sử dụng: if ( count((array)$articles)){..}như ở đây
fWd82

2
tôi đã có vấn đề này trên phpmyadmin v4.6 tôi đã cập nhật lên 4.8 nó biến mất. , có vẻ như có liên quan đến mariadb 10.3 vì tôi không gặp vấn đề gì với mariadb 10.1 với phpmyadmin 4.6
user889030

Trong trường hợp của tôi, sự cố xảy ra khi tôi đã cài đặt php 7.3 trong khi phpMyAdmin của tôi là 4.7.1, tôi đã chuyển trở lại php 7.0 và nó hoạt động tốt hoặc bạn cài đặt phiên bản phpMyAdmin tương thích với php 7.3
vinsa

Câu trả lời:


876

Chỉnh sửa tập tin /usr/share/phpmyadmin/libraries/sql.lib.phpbằng lệnh này:

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

Trên dòng 613, hàm đếm luôn luôn được đánh giá là đúng vì không có dấu ngoặc đơn đóng sau $analyzed_sql_results['select_expr'] . Việc thay thế bên dưới sẽ giải quyết vấn đề này, sau đó bạn sẽ cần xóa dấu ngoặc đơn đóng cuối cùng trên dòng 614, vì giờ đây nó là dấu ngoặc đơn bổ sung.

Thay thế:

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

Với:

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

Khởi động lại apache máy chủ:

sudo service apache2 restart

95
Không thể tin được. Hoạt động trên Ubuntu 18.04 với cài đặt phpmyadmin bằng apt.
PNDA

7
Làm việc ở chỗ tôi có thể chọn các bảng, nhưng đã trả về lỗi khi tôi cố xuất Db
Alperian


30
Nếu bạn gặp phải một vấn đề tương tự trong xuất DB, bạn cần chỉnh sửa /usr/share/phpmyadmin/lologists/plugin_interface.lib.php, dòng 551 từ if ($ tùy chọn! = Null && Count ($ tùy chọn)> 0) {thành _if ($ tùy chọn! = null && Count ((mảng) $ tùy chọn)> 0) { Có thể thú vị cho @alperian và những người khác
Bernd Schuhmacher

5
Điều này đã không làm việc cho tôi. Tôi nhận được Error in processing request Error code: 500 Error text: Internal Server Error. Giải pháp của @Chandra Nakka đã khắc phục vấn đề của tôi.
Jee

473

Phương pháp dễ nhất:

Chỉ cần chạy dòng lệnh bên dưới trong terminal và quay lại PhpMyAdmin. Bây giờ nó hoạt động tốt :)

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

Phương pháp thủ công:

Mở tệp sql.lib.php

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

Tìm count($analyzed_sql_results['select_expr']mã trên tập tin. Bạn có thể lấy cái này ở dòng ~ 613 . Bạn có thể thấy mã bên dưới sai

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

Chỉ cần thay thế mã sai bằng mã dưới đây

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

Lưu tệp và đến với PhpMyAdmin .

Bây giờ nó hoạt động tốt :)


39
Hoạt động trong Ubuntu 18.04 vào tháng 8 năm 2018 :)
Luiz Gonçalves

4
Không hoạt động với tôi trên Ubuntu 16.04
SP Singh

2
Hoạt động như bùa mê
Rameez Rami

2
Hoạt động trên Ubuntu 19.04. Cảm ơn
murume

4
Một mẹo nhỏ để nano là, bạn có thể nhập nano +613 filenameđể đưa bạn trực tiếp đến dòng cụ thể.
SteffenNielsen

102

tôi đã tìm thấy cái này PHP 7.2 Count () - Lỗi SYNTAX trong sql.lib.php

Điều đó hoàn toàn hoạt động trên cấu hình của tôi:

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

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

Thay đổi dòng : Di chuyển dấu ngoặc đơn trước ==

| | ( (đếm ($ phân tích_sql_results ['select_expr'] ) == 1) && ($ phân tích_sql_results ['select_expr'] [0] == '*')))

trong

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

Trong dòng sau, bạn cũng sẽ phải loại bỏ một trong các phép tính đóng cuối ở cuối.
floppes

Cảm ơn. Làm thế nào mà một lỗi như vậy được phát hành với một gói có thể cài đặt apt? Chỉ là một chút vô lý.
Josh Morel

1
@floppes Không, không đúng. Bạn KHÔNG NÊN loại bỏ sự đóng cửa đó. Tôi đã thử nghiệm theo cách của bạn và nó gây ra server error. Câu trả lời của @ loquace nên là câu trả lời được chấp nhận.
Dài

Cảm ơn bạn đã đánh vần nó cho chúng tôi và sử dụng phông chữ đậm khi cần thiết. Cả câu trả lời thứ 1 và thứ 2 đều không đủ rõ ràng đối với tôi vì họ không nói họ đang làm gì. Chỉnh sửa trên nano không giống như gedit hoặc bất cứ điều gì.
logicbloke

71

đã thử nghiệm trên Debian, nên hoạt động trên Ubuntu:

1.) Lần đầu tiên tải xuống tệp phpMyadmin mới nhất.

2.) Xóa (tạo bản sao lưu) tất cả các tệp phiên bản trước đó nằm trong /usr/share/phpmyadminthư mục.

3.) Giải nén /usr/share/phpmyadmin/thư mục tất cả các tệp của phpmyadmin mới nhất.

4.) Sửa đổi tập tin libraries/vendor_config.phpvà thay đổi dòng:

define('CONFIG_DIR', '');

đến

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

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

đến

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

5.) khởi động lại máy chủ apache và thực hiện.


3
Hoạt động trên Ubuntu 16.04
pjehan

7
Hoạt động trên Ubuntu 18.04
Simon Epskamp

5
Ubuntu 18.04, phpMyAdmin 4.8.0.1 - Tôi cầnmkdir /usr/share/phpmyadmin/tmp; chgrp www-data tmp; chmod g+w tmp;
billynoah

Ubuntu 16.04 chỉ cần giải nén nó để /usr/share/phpmyadminlàm việc. Không cần phải làm theo các bước sau.
tushar.dahiwale

@billynoah Tương tự ở đây với cài đặt mới. Tôi đã tạo thư mục tmp, đặt nó thành 777, khởi động lại Apache, đăng xuất khỏi phpMyAdmin và các lỗi đã biến mất.
JScarry

38

Chỉnh sửa tập tin :'/usr/share/phpmyadmin/libraries/sql.lib.php'

Thay thế :(count($analyzed_sql_results['select_expr'] == 1)

Với : (count($analyzed_sql_results['select_expr']) == 1

cái này làm việc cho tôi


Nó hoạt động với tôi dựa trên điều kiện bạn đã khắc phục được lỗi 500 nội bộ, nhưng vấn đề lỗi cũ "phpmyadmin - Count (): Tham số phải là một mảng hoặc một đối tượng thực hiện Countable" không được giải quyết.
shashik493

điều này có vẻ hiệu quả với tôi nhưng có ai biết tại sao điều này lại xảy ra không? Phpmyadmin của tôi đã hoạt động tốt và sau đó tất cả đột ngột tôi đăng nhập ngày hôm nay và nó có vẻ như có vấn đề này? Ubuntu 18.04.2 LTS
wheelmanx

Hoạt động trên UBfox 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

Điều này làm việc cho tôi vào ngày 18.04, cảm ơn! Thậm chí không cần phải khởi động lại máy chủ - PHP được hiểu là 'trực tiếp'.
Jelle Veraa

@JelleVeraa, Bạn là trường hợp đặc biệt hehehe;)
kaleem

32

Nếu ai đó có lỗi tương tự trong trang xuất DB (tôi gặp vấn đề này trong Ubuntu 18.04), thì hãy thay thế dòng 551 trong tệp /usr/share/phpmyadmin/libraries/plugin_interface.lib.phpbằng mã

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

Điều này cũng giúp tôi, nhưng tôi phải làm cả câu trả lời và cái này. Ubuntu 18.04
Karuhanga

2
Điều này hoạt động để loại bỏ các thông báo lỗi, nhưng tôi nghĩ rằng nó sẽ tránh được câu lệnh if cùng nhau và tôi không nhận được bất cứ điều gì trong xuất khẩu cơ sở dữ liệu của mình (với một loạt lỗi hiển thị ở phía dưới sau khi làm mới trang sau khi hoàn thành cơ sở dữ liệu xuất với dấu chân tệp nhỏ)
Warren Wang

Hôn, hôn, anh yêu em.
Noah Krasser

1
Trên Debian 9 thay thế dòng 551: if ($options != null && count($options) > 0) {bằng: if ($options != null) {sau đó bạn có thể xuất
BitDEVil2K16

Đây là người duy nhất làm việc vào ngày 18.04
TeT Psy


24

Tiếp tục các bước sau tại ubfox-18.04:

Bước 1) xác định vị trísql.lib.php

Nó sẽ hiển thị một cái gì đó như:

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

Bước 2) Mở terminal (Alt t) và viết:

sudo /usr/sbin/pma-configure

Bước 3)sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php và tìm kiếm bên dưới chức năng:

 

    chức năng PMA_isRememberSortingOrder ($ phân tích_sql_results)
     {
        trả lại $ GLOBALS ['cfg'] ['Ghi nhớ sắp xếp']
            &&! ($ phân tích_sql_results ['is_count']
                | | $ analy_sql_results ['is_export']
                | | $ analy_sql_results ['is_func']
                | | $ analy_sql_results ['is_analyse'])
            && $ đã phân tích_sql_results ['select_from']
            && ((trống ($ analy_sql_results ['select_expr']))
                | | (đếm ($ phân tích_sql_results ['select_expr'] == 1)
                    && ($ analy_sql_results ['select_expr'] [0] == '*')))
            && đếm ($ phân tích_sql_results ['select_tables']) == 1;
     }

Bước 4) Thay thế chức năng trên bằng:

     chức năng PMA_isRememberSortingOrder ($ phân tích_sql_results)
     {
        trả lại $ GLOBALS ['cfg'] ['Ghi nhớ sắp xếp']
            &&! ($ phân tích_sql_results ['is_count']
                | | $ analy_sql_results ['is_export']
                | | $ analy_sql_results ['is_func']
                | | $ analy_sql_results ['is_analyse'])
            && $ đã phân tích_sql_results ['select_from']
            && ((trống ($ analy_sql_results ['select_expr']))
                | | (đếm ($ phân tích_sql_results ['select_expr']) == 1)
                    && ($ analy_sql_results ['select_expr'] [0] == '*'))
            && đếm ($ phân tích_sql_results ['select_tables']) == 1;
     }

Bước 4) Lưu và đóng tệp và bên dưới lệnh trên thiết bị đầu cuối

sudo /usr/sbin/pma-secure

Bước 5) sudo service mysql reload

Bước 6) sudo service apache2 reload

Nó làm việc cho tôi .. Goodluck


Việc tải lại MySQL và apache là không cần thiết.
Tacsiazuma

Tôi nhận được thông báo này sau khi sửa đổi tệp: "- root @ Lalla: ~ # / usr / sbin / pma-safe - Bảo mật cài đặt phpMyAdmin ... - Tập lệnh thiết lập sẽ không thể ghi cấu hình. - root @ Lalla: ~ # "
cl-r

22

mở tệp này: '/usr/share/phpmyadmin/lologists/sql.lib.php'

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

nhấn ctrl + w để tìm kiếm (đếm ($ phân tích_sql_results ['select_expr'] == 1)

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

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

Khởi động lại máy chủ

 sudo service apache2 restart

hơn nữa, nếu bạn vẫn gặp phải vấn đề tương tự thì hãy làm theo.

mở tập tin này /usr/share/phpmyadmin/lologists/plugin_interface.lib.php

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

Tìm: if ($ tùy chọn! = Null && Count ($ tùy chọn)> 0) {

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

thay thế bằng mã sau

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

Bây giờ lưu và khởi động lại máy chủ

sudo /etc/init.d/apache2 restart

Bạn chỉ cần thêm một cú đúp. Nhưng cảm ơn. Tôi đã tháo nẹp thêm ở cuối dòng
redesturationa

Tôi đã cài đặt xampp trên máy mac của mình
Saurabh Verma

18

Tôi nghĩ tùy chọn tốt nhất là cập nhật Phpmyadmin lên phiên bản đã được sửa.

Cho đến khi nó được xuất bản dưới dạng một cuộc tranh luận, bạn có thể làm như trong câu trả lời @ crimson-501 mà tôi sẽ sao chép bên dưới:

  • Bước đầu tiên của bạn là cài đặt PMA (phpMyAdmin) từ repo Ubuntu chính thức : apt-get install phpmyadmin.
  • Tiếp theo, cd vào thư mục usr / share : cd /usr/share.
  • Thứ ba, xóa thư mục phpmyadmin : rm -rf phpmyadmin.
  • Bây giờ chúng tôi cần tải xuống phiên bản PMA mới nhất vào hệ thống của chúng tôi (Lưu ý rằng bạn cần wget apt-get install wget:): wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-english.zip" Hãy để tôi giải thích các đối số của lệnh này, -P xác định đường dẫn và "link.zip" hiện tại (17/07/18 ) phiên bản mới nhất của PMA. Bạn có thể tìm thấy các liên kết TẠI ĐÂY .
  • Đối với bước tiếp theo này, bạn cần giải nén ( apt-get install unzip) : unzip phpMyAdmin-4.9.4-english.zip. Chúng tôi vừa giải nén PMA, bây giờ chúng tôi sẽ chuyển nó đến nhà cuối cùng.
  • Hãy sử dụng lệnh cp(sao chép) để di chuyển các tệp của chúng tôi! Lưu ý rằng chúng ta phải thêm -rđối số vì đây là thư mục. cp -r phpMyAdmin-4.9.4-english phpmyadmin.
  • Bây giờ là lúc để dọn dẹp : rm -rf phpMyAdmin-4.9.4-english.

Hãy đọc tiếp!

Bây giờ bạn có thể nhận thấy hai lỗi sau khi bạn đăng nhập vào 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.

Tuy nhiên, những vấn đề này tương đối dễ khắc phục. Đối với vấn đề đầu tiên, tất cả những gì bạn phải làm là lấy trình soạn thảo lựa chọn và chỉnh sửa /usr/share/phpmyadmin/config.inc.phpnhưng có một vấn đề, chúng tôi đã xóa nó! Điều đó ổn, tất cả những gì bạn phải làm là: cd /usr/share/phpmyadmin& cp config.sample.inc.php config.inc.php.

Ví dụ Mục nhập biến bí mật của 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! */

Bây giờ lưu và đóng tệp.

  • Bây giờ chúng tôi sẽ tạo một thư mục tmp cho PMA: mkdir tmp& chown -R www-data:www-data /usr/share/phpmyadmin/tmp. Lệnh cuối cùng cho phép máy chủ web Apache sở hữu thư mục tmp và chỉnh sửa nội dung của nó.

Câu trả lời này rất hữu ích! Giải quyết vấn đề cho tôi! Cảm ơn! PS: Bạn có thể tìm thấy máy phát điện blowfish trực tuyến.
lucbas

Và giải pháp tại liên kết này: devanswers.co/manual-upTHER-phpmyadmin tuân theo một kế hoạch tương tự, ngoại trừ thay thế các bước của cá kiếm bằng những bước dễ dàng hơn ..
gwideman

Đây là một giải pháp tốt hơn nhiều so với việc chỉnh sửa các tệp cấu hình của các phiên bản cũ hơn.
andromeda

17

Hãy thử thay thế chức năng này trong tệp: /usr/share/phpmyadmin/lologists/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;
}

Cảm ơn! dòng này là nơi tôi đã nhầm lẫn ở cuối, trong đó tôi có 3 khung đóng ngay lập tức tôi chỉ cần 2 dấu ngoặc đóng && ($ analy_sql_results ['select_expr'] [0] == '*')). Đã làm việc trên phpmyadmin 4.6, php 7.2.10, ubfox 18.4.1
Wang'l Pakhrin

17

Ubuntu 18.04 LTS

Đây là những bước làm việc cho tôi. Rất, rất cám ơn William Desportes đã cung cấp các bản cập nhật tự động trên Ubuntu PPA của họ.

Bước 1 ( từ bài đăng của William Desportes )
$sudo add-apt-repository ppa:phpmyadmin/ppa

Bước 2
$sudo apt-get --with-new-pkgs upgrade

Bước 3
$sudo service mysql restart

Nếu bạn gặp vấn đề khi khởi động lại mysql, bạn cũng có thể khởi động lại với chuỗi sau
$ sudo service mysql stop;
$sudo service mysql start;


2
Giải quyết vấn đề trên Ubuntu 18.04 LTS. Nên là câu trả lời được chấp nhận.
bgaze

15

Ubuntu 18.10 (tháng 12 năm 2018)

Dòng 613, 614, 615, thay thế bằng:

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

Nó hoạt động với tôi .. Không cần nâng cấp mysql hay bất cứ điều gì ... Cảm ơn @ole
Nitin Vaghani

15

Làm việc cho tôi .. Ubuntu 18.04

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

Tìm count($analyzed_sql_results['select_expr']mã trên tập tin. Bạn có thể lấy cái này ở dòng ~ 613.

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

Chỉ cần thay thế bằng mã:

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

Lưu tệp và tải lại PhpMyAdmin.

Làm xong!!!


1
Trong dòng 613, đổi thành|| (count($analyzed_sql_results['select_expr']) == 1
tnductam

11

Đối với phiên bản phpmyadmin của tôi (4.6.6deb5), tôi đã tìm thấy dòng 613 và nhận ra dấu ngoặc đơn đếm () không được đóng đúng. Để khắc phục điều này tạm thời cho đến khi phát hành tiếp theo, chỉ cần thay đổi:

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

đến:

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

Có một dấu ngoặc đơn bị thiếu để đóng lệnh gọi | | (tính ($ phân tích_sql_results ['select_expr']) == 1 là tuyên bố chính xác
Ruberandinda Patience

đường dẫn tệp là "/usr/share/phpmyadmin/lologists/sql.lib.php" cho những người không biết tìm nó ở đâu.
Ali Imran

9

Điều này được sửa trong các phiên bản sau của PHPMyAdmin. Kho phần mềm Ubuntu cho Ubuntu 18.04.2 giữ phiên bản 4.6.6.5, trong khi chúng hiện ở mức 4.9.0.1. Cập nhật cài đặt PHPMyAdmin của bạn sẽ khắc phục vấn đề này, nhưng có thể chứng minh là rủi ro hơn là chỉ chỉnh sửa một dòng mã đó. Đây là cách tôi đã làm trên Ubuntu Server của mình. Các bước về cơ bản là giống nhau (với một đường dẫn khác nhau) cho tất cả các hệ điều hành.

  1. Tải xuống 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. Sao lưu cài đặt PHPMyAdmin cũ của bạn.
cp -r /usr/share/phpmyadmin ~/phpmyadmin-backup
  1. Thả PHPMyAdmin mới của bạn vào PHPMyAdmin cũ của bạn
cd phpMyAdmin-4.9.0.1-all-languages
rm -r /usr/share/phpmyadmin/doc/html
cp -R * /usr/share/phpmyadmin/

Xác nhận rằng nó hoạt động. Nếu không, tốt ... Bạn có một bản sao lưu, vì vậy hãy khôi phục nó và chỉnh sửa thủ công dòng bị lỗi. Theo kinh nghiệm cá nhân của riêng tôi, tôi phát hiện ra sau khi thực hiện điều này, phiên bản 4.6.6.5 không chỉ bị lỗi, mà còn rất chậm so với phiên bản 4.9.0.1 mới. Việc tăng tốc độ là ma thuật thuần túy cho một thứ mà tôi mặc dù có chất lượng "WordPress".


Tôi sẽ chuyển đổi thứ tự 1 và 2, và trước khi tôi quên cd / tmp nhưng ngoài ra, tuyệt vời, cảm ơn bạn.
Chris

Điều này làm việc cho tôi, cảm ơn cho giải pháp đơn giản!
uestcfei

8

Hoạt động trên UBUNTU 16.04.3 Chỉ cần mở

usr / share / library / sql.lib.php

sửa đổi

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

Đến

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


5

Nâng cấp lên phpMyAdmin 4.8.3. điều này giải quyết các vấn đề tương thích PHP 7.2


5

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

Đây là những gì tôi đã thay đổi trong dòng 614 và phpmyadmin hoạt động mà không có bất kỳ lỗi nào. Cần một (trước khi đếm, và một )trước ==. Đó là nó.


4

Chỉnh sửa tập tin '/usr/share/phpmyadmin/lologists/sql.lib.php' Thay thế: (tạo bản sao lưu)

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

Với:

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

3

Xin chào giải quyết vấn đề tương tự của tôi hoàn toàn (nhập / xuất, v.v.):

Sửa lỗi Phpmyadmin [plugin_interface.lib.php] + Php7.2 + Ubuntu 16.04

vì vậy ... trong phiên bản Ubuntu 18.04, mysql, php7.2: Terminal:

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

Tìm dòng sau (ctrl + f):

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

nó ở dòng # 551 đối với tôi

thay đổi để làm theo:

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

ctrl + s để lưu các thay đổi

và trong thiết bị đầu cuối: ctrl + c để nhận lại ...

và: sudo systemctl restart apache2

"Tôi nghĩ trong phiên bản php mới. Nó không thể sử dụng Count () hoặc sizeof () với loại không có mảng. Tham số bắt buộc với mảng là cách dễ dàng để giải quyết lỗi này, ..."

Cảm ơn tác giả ban đầu đã giải quyết vấn đề! Tôi cố gắng chia sẻ nó!


3

Mở /usr/share/phpmyadmin/sql.lib.phptệp với các đặc quyền nâng cao và chỉnh sửa các mục sau trong chức năng PMA_isRememberSortingOrder():

  1. ~ dòng 613 để sửa lỗi ban đầu:
    • Thay thế || count($analyzed_sql_results['select_expr'] == 1)
    • Với || (count($analyzed_sql_results['select_expr']) == 1)
  2. ~ dòng 614 để sửa lỗi 500 có thể sẽ xảy ra:
    • Thay thế && ($analyzed_sql_results['select_expr'][0] == '*')))
    • Với && ($analyzed_sql_results['select_expr'][0] == '*'))

Khởi động lại máy chủ Apache của bạn : sudo service apache2 restart.

Đã thử nghiệm trên Linux Mint 19.1 dựa trên Ubuntu 18.04, với PhpMyAdmin 4.6.6 và PHP 7.2.


3

Tôi đã thử tất cả các giải pháp trên nhưng không hiệu quả với tôi.

Thử cái này:-

Cài đặt phiên bản PHP bắt buộc (trong trường hợp của tôi 7.0) và sau đó trong thiết bị đầu cuối, nhập

sudo update-alternatives --config php

Đầu ra sẽ như thế này: -

nhập mô tả hình ảnh ở đây

Sau đó, bạn có thể chuyển sang bất kỳ phiên bản PHP nào bằng cách nhập số lựa chọn (trong trường hợp của tôi là 1).

Hy vọng điều này có thể giúp đỡ khác - :)


2

Tôi gặp vấn đề này khi sử dụng windows và các phản hồi ở trên đã giải quyết nó cho tôi, tuy nhiên khi tôi chuyển sang linux (ub Ubuntu 18.04 LTS) tôi gặp vấn đề tương tự và không thể tìm ra cách giải quyết vì tôi không thấy tệp '/usr/share/phpmyadmin/lologists/sql.lib.php'.

Tệp sql.lib.php này không có trong thư mục chia sẻ hoặc thư mục phpmyadmin / library của thư mục / opt / lampp của tôi - vì tôi đang sử dụng xampp trên Ubuntu của mình. Dựa trên bản cập nhật được thực hiện cho xampp (vì tôi đã sử dụng cài đặt mới nhất tính đến thời điểm hiện tại).

Câu trả lời vẫn là thay thế: (count($analyzed_sql_results['select_expr'] == 1)

Với: (count($analyzed_sql_results['select_expr']) == 1

Tuy nhiên, tập tin cần tìm được Sql.phptìm thấy trong/opt/lampp/phpmyadmin/libraries/classes/Sql.php

Các bản cập nhật trong tương lai hoặc nếu bạn vẫn không tìm thấy nó: sử dụng grep -r 'count($analyzed_sql_results' /opt/lampp/phpmyadminđể tìm kiếm các tài liệu phù hợp trong thư mục của bạn và chỉnh sửa cho phù hợp


2

Chức năng thay thế:

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

Chỉnh sửa tập tin /usr/share/phpmyadmin/libraries/sql.lib.php

Xem lỗi về lỗi của bạn

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

đi đến dòng này và loại bỏ chức năng gọi.

Nó làm việc cho tôi.


2

Tôi thấy rằng tất cả các bạn đang chỉnh sửa hoặc cập nhật từ các tập tin của chúng tôi

Đối với những người muốn cập nhật tự động, bạn có thể sử dụng Ubuntu PPA của chúng tôi

sudo add-apt-repository ppa: phpmyadmin / ppa

Và đối với người dùng Debian, bạn sẽ cần đợi phiên bản Debian tiếp theo hoặc sử dụng PPA

Ubuntu 20 có phpMyAdmin 4.9 hoặc phiên bản mới hơn

Vấn đề Debian trên trình theo dõi của chúng tôi

Các vấn đề có thể đếm được trên trình theo dõi của chúng tôi

TLDR Cập nhật lên phiên bản 4.9 hoặc 5.0 mới nhất để giải quyết vấn đề này.


2

Điều này làm việc tốt với tôi trên Ubuntu 18.04 .

Mở tệp sql.lib.php

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

Thay thế mã sai này:

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

Với cái này:

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

Lưu các tập tin.

Khởi động lại máy chủ của bạn với:

sudo service apache2 restart

Và làm mới PhpMyAdmin


1

Trên Ubuntu 18.04 với MariaDb và Nginx, tôi đã giải quyết nó bằng cách cập nhật tệp /usr/share/phpmyadmin/lologists/sql.lib.php như sau:

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

Câu trả lời được đề cập bởi @Nguyen đưa ra một lỗi 500 nói:

FastCGI sent in stderr: "PHP message: PHP Parse error:  syntax error, unexpected ')', expecting ';' in /usr/share/phpmyadmin/libraries/sql.lib.php on line 614"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.