phpmyadmin-count () : 매개 변수는 Countable을 구현하는 배열 또는 객체 여야합니다


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로 업데이트되어 사라졌습니다. , phpmyadmin 4.6을 사용하여 mariadb 10.1에서 해당 문제가 없었기 때문에 mariadb 10.3과 관련이있는 것 같습니다
user889030

내 경우에는 phpMyAdmin이 4.7.1 인 동안 PHP 7.3을 설치했을 때 문제가 발생했습니다. PHP 7.0으로 다시 전환하여 정상적으로 작동하거나 PHP 7.3과 호환되는 phpMyAdmin 버전을 설치해야합니다
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] == '*'))

서버 아파치를 다시 시작하십시오.

sudo service apache2 restart

95
믿을 수 없는. apt를 사용하여 phpmyadmin이 설치된 Ubuntu 18.04에서 작동합니다.
PNDA

7
테이블을 선택할 수는 있지만 Db를 내보내려고 할 때 오류가 반환되었습니다.
Alperian


30
DB 내보내기에서 비슷한 문제가 발생하면 /usr/share/phpmyadmin/libraries/plugin_interface.lib.php, 551 행에서 ($ options! = null && count ($ options)> 0) {~ _if ($를 옵션 = 널 (null) && 수 ((배열) $ 옵션)> 0!) { @alperian에 대한 흥미로운 일이 될 수 있으며 다른 사람
베른트 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
2018 년 8 월 우분투 18.04에서 작동 :)
Luiz Gonçalves

4
우분투 16.04에서 나를 위해 작동하지 않았다
SP Singh

2
매력처럼 작동
Rameez Rami

2
우분투 19.04에서 작동합니다. 감사합니다
murume

4
나노에 대한 깔끔한 작은 트릭 nano +613 filename은 특정 라인으로 직접 이동하기 위해 입력 할 수 있다는 것 입니다.
SteffenNielsen 오전

102

나는 이것을 찾았다 sql.lib.php에서 구문 오류 - PHP 7.2 카운트 ()

그것은 내 구성에서 완벽하게 작동합니다.

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 ($ analyzed_sql_results [ 'select_expr']) ) == 1) && ($ analyzed_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;
 }

다음 줄에서 마지막에 닫는 마비 중 하나를 제거해야합니다.
8:29에

감사. apt 설치 가능 패키지로 이러한 오류가 어떻게 발생 했습니까? 조금 말도 안돼
Josh Morel

1
@floppes 아니요, 정확하지 않습니다. 닫는 마비를 제거해서는 안됩니다. 나는 당신의 길을 시험했고 그것이 일어났습니다 server error. @loquace의 답변이 받아 들여 져야합니다.
Long

우리를 위해 철자를 작성하고 필요한 곳에 굵은 글꼴을 사용해 주셔서 감사합니다. 그들이 한 일을 말하지 않았기 때문에 첫 번째 대답과 두 번째 대답 모두 나에게 분명하지 않았습니다. 나노에서의 편집은 gedit와는 다릅니다.
logicbloke

71

데비안에서 테스트되었으며 우분투에서 작동합니다.

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.) 아파치 서버를 다시 시작하고 완료하십시오.


3
우분투 16.04에서 작동
pjehan

7
우분투 18.04에서 작동
Simon Epskamp

5
우분투 18.04, phpMyAdmin 4.8.0.1 – 필자mkdir /usr/share/phpmyadmin/tmp; chgrp www-data tmp; chmod g+w tmp;
billynoah

우분투 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 () : 매개 변수는 배열이거나 Countable을 구현하는 객체 여야합니다"는 해결되지 않았습니다.
shashik493

이것은 나를 위해 작동하는 것 같지만 왜 이런 일이 일어 났는지 아는 사람이 있습니까? 내 phpmyadmin이 제대로 작동하고 있었고 오늘 갑자기 로그인 했는데이 문제가있는 것처럼 보입니까? 우분투 18.04.2 LTS
wheelsmanx 1

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는 '실시간'으로 해석됩니다.
Jelle Veraa

@JelleVeraa, 당신은 특별한 경우입니다 hehehe;)
kaleem

32

누군가 DB 내보내기 페이지에서 비슷한 오류가 발생하면 (우분투 18.04 에서이 문제가 발생했습니다) 파일의 551 행 /usr/share/phpmyadmin/libraries/plugin_interface.lib.php을 코드로 바꿉니다.

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

이것은 나에게도 도움이되었지만 대답과 이것을 모두해야했습니다. 우분투 18.04
Karuhanga

2
이것은 오류 메시지를 없애기 위해 노력했지만 if 문을 함께 피하고 데이터베이스 내보내기에서 아무것도 얻지 못합니다 (데이터베이스를 완료 할 때 페이지를 새로 고친 후 맨 아래에 많은 오류가 표시됨) 작은 파일 공간으로 내보내기)
Warren Wang

키스, 키스, 사랑해
노아 크라이 저

1
데비안 9 일 라인 551 대체 if ($options != null && count($options) > 0) {:와를 if ($options != null) {다음 내보낼 수 있습니다
BitDEVil2K16

이것은 18.04에 작동 한 유일한 것
TeT Psy


24

우분투 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 ($ analyzed_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'])
            && $ analyzed_sql_results [ 'select_from']
            && ((빈 ($ 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;
     }

4 단계) 위의 기능을 다음으로 교체하십시오.

     PMA_isRememberSortingOrder ($ analyzed_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'])
            && $ analyzed_sql_results [ 'select_from']
            && ((빈 ($ 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;
     }

4 단계) 터미널에서 파일을 저장하고 닫습니다.

sudo /usr/sbin/pma-secure

5 단계) sudo service mysql reload

6 단계) sudo service apache2 reload

그것은 나를 위해 작동합니다 .. Goodluck


MySQL과 아파치 리로드는 필요하지 않습니다.
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 ($ analyzed_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이 설치되어있어 / usr / share / phpmyadmin 폴더를 찾을 수 없으므로 '/usr/share/phpmyadmin/libraries/sql.lib.php'이 존재합니다. 저에게 도움이 되겠습니까?
Saurabh Verma 2016 년

18

가장 좋은 옵션은 Phpmyadmin을 이미 수정 한 버전으로 업데이트하는 것입니다.

deb로 게시 될 때까지 다음과 같이 할 수 있습니다. @ crimson-501 답변 복사 할 수 있습니다.

  • 첫 번째 단계는 공식 우분투 저장소에서 PMA (phpMyAdmin)를 설치하는 것 apt-get install phpmyadmin입니다.
  • 그런 다음 usr / share 디렉토리로 cd하십시오 cd /usr/share.
  • 셋째, phpmyadmin 디렉토리를 제거하십시오 : rm -rf phpmyadmin .
  • 이제 시스템에 최신 PMA 버전을 다운로드해야합니다 (wget이 필요 합니다 :) apt-get install wget: wget -P /usr/share/ "https://files.phpmyadmin.net/phpMyAdmin/4.9.4/phpMyAdmin-4.9.4-english.zip"이 명령의 인수를 설명하겠습니다. -P는 경로를 정의하고 "link.zip"은 현재 (7/17/18) ) 최신 버전의 PMA. 해당 링크는 여기에서 찾을 수 있습니다 .
  • 다음 단계에서는 압축을 풀어야합니다 ( apt-get install unzip) : unzip phpMyAdmin-4.9.4-english.zip. 우리는 방금 PMA 압축을 풀었습니다. 이제 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 복어 비밀 변수 항목 예 :

/*
 * 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 tmp& chown -R www-data:www-data /usr/share/phpmyadmin/tmp. 마지막 명령은 Apache 웹 서버가 tmp 디렉토리를 소유하고 그 내용을 편집 할 수있게합니다.

이 답변은 매우 유용했습니다! 나를 위해 문제를 해결했습니다! 감사! 추신 : 온라인으로 복어 생성기를 찾을 수 있습니다.
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 개의 닫는 괄호 만 필요합니다 && ($ analyzed_sql_results [ 'select_expr'] [0] == '*')). phpmyadmin 4.6, php 7.2.10, 우분투 18.4.1 작업
Wang'l Pakhrin

17

우분투 18.04 LTS

이것이 나를 위해 일한 단계입니다. Ubuntu PPA의 자동 업데이트를 제공 한 William Desportes에게 감사드립니다.

1 단계 ( William Desportes post에서 )
$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의 문제를 해결합니다. 허용되는 답변이어야합니다.
bgaze

15

우분투 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;

그것은 나를 위해 일했다 .. mysql 또는 아무것도 업그레이드 할 필요가 없습니다 ... 감사합니다 @ole
Nitin Vaghani

15

나를 위해 일하십시오. 우분투 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

함수 호출을 닫는 괄호가 누락되었습니다 || (count ($
analyzed_sql_results

파일 경로는 "/usr/share/phpmyadmin/libraries/sql.lib.php"입니다.
Ali Imran

9

이것은 이후 버전의 PHPMyAdmin에서 수정되었습니다. Ubuntu 18.04.2 용 Ubuntu 소프트웨어 리포지토리에는 버전 4.6.6.5가 있으며 현재 4.9.0.1입니다. PHPMyAdmin 설치를 업데이트하면이 문제가 해결되지만 한 줄의 코드를 편집하는 것보다 더 위험 할 수 있습니다. 다음은 우분투 서버에서 수행 한 방법입니다. 단계는 기본적으로 모든 운영 체제에서 동일합니다 (다른 경로로).

  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를 사용 하지만 그 점을 제외하고는 훌륭합니다. 감사합니다.
Chris

이것은 간단한 해결책 덕분에 나를 위해 작동합니다!
uestcfei

8

UBUNTU 16.04.3에서 작동

usr / share / libraries / 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 + 우분투 16.04

그래서 ... 우분투 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 ()를 사용할 수 없습니다. 배열에 대한 강제 매개 변수는이 버그를 해결하는 쉬운 방법입니다."

문제 해결을위한 원저자에게 감사합니다! 나는 그것을 공유하려고합니다!


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 .

PhpMyAdmin 4.6.6 및 PHP 7.2를 사용하여 Ubuntu 18.04 기반 Linux Mint 19.1에서 테스트되었습니다.


3

위의 모든 해결책을 시도했지만 나에게 효과가 없었습니다.

이 시도:-

필요한 버전의 PHP (내 경우 7.0)를 설치 한 다음 터미널에 다음을 입력하십시오.

sudo update-alternatives --config php

출력은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

그런 다음 선택 번호 (제 경우 1)를 입력하여 모든 버전의 PHP로 전환 할 수 있습니다.

이것이 다른 도움이 될 수 있기를 바랍니다 :)


2

Windows를 사용할 때이 문제가 있었고 위의 응답으로 문제가 해결되었지만 Linux로 전환했을 때 (ubuntu 18.04 LTS) 동일한 문제가 있었고 파일을 보지 못했기 때문에 해결 방법을 알 수 없었습니다. '/usr/share/phpmyadmin/libraries/sql.lib.php'.

이 sql.lib.php 파일은 / opt / lampp 디렉토리의 공유 폴더 또는 phpmyadmin / libraries 폴더에 없습니다. 우분투에서 xampp를 사용하고 있었기 때문입니다. 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

데비안 사용자는 다음 버전의 데비안을 기다리거나 PPA를 사용해야합니다.

Ubuntu 20에는 phpMyAdmin 4.9 이상 버전이 있습니다

트래커의 데비안 문제

트래커의 수많은 문제

TLDR이 문제를 해결하려면 최신 4.9 또는 5.0 버전으로 업데이트하십시오.


1

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

(ĦΔŇĐŘΔ ŇΔҜҜΔ 답변 @ 대 @Jacky 응우 엔)을 다를 수 있습니다 conf의 파일에 코드의 오류로 일반 솔루션 대답하는 것 이해하기 위해 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. 이제 논리는이 하위 배열이 비어 있는지 또는 값이 "*

  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'이 존재합니다. 저에게 도움이 되겠습니까?
Saurabh Verma 2016 년

@SaurabhVerma는 sql.lib.php 또는 phpmyadmin 폴더에 대한 파일 검색을 수행합니다. phpmyadmin이있는 경우에는 어딘가에 설치해야합니다.
jave.web
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.