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

백업을 테이블에 업로드하여 다음과 같은 테이블을 엽니 다.

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로 돌아 갑니까?



답변

/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


답변

가장 쉬운 방법 :

터미널에서 아래 명령 행을 실행하고 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으로 오십시오 .

이제는 잘 작동합니다 🙂


답변

나는 이것을 찾았다 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;
 }


답변

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

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


답변

파일 편집 :'/usr/share/phpmyadmin/libraries/sql.lib.php'

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

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

이것은 나를 위해 일했다


답변

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


답변

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

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