programing

phpmyadmin - count(): 파라미터는 카운터블을 구현하는 어레이 또는 객체여야 합니다.

firstcheck 2022. 9. 26. 21:49
반응형

phpmyadmin - count(): 파라미터는 카운터블을 구현하는 어레이 또는 객체여야 합니다.

백업을 테이블에 업로드하고 테이블을 열면 다음과 같이 표시됩니다.

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행에서는 다음 시간 뒤에 닫는 괄호가 없기 때문에 카운트 함수는 항상 true로 평가됩니다.$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

가장 쉬운 방법:

터미널에서 아래 명령줄을 실행하고 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 7.2 count() - SYNATS 오류를 발견했습니다.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

변경:== 앞에 괄호 이동

|| ( count sql _ sql _ expr [ select _ expr ] )== 1) & & ( select _ sql _ 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;
 }

Debian에서 테스트 완료, Ubuntu에서 동작해야 합니다.

1) 먼저 최신 phpMyadmin 파일을 다운로드합니다.

2)에 모든 을 삭제(.2) 음음 、 다다 、 다백 ( 업합 )/usr/share/phpmyadmin디렉토리로 이동합니다.

3) 압축 해제:/usr/share/phpmyadmin/프마이아민

4. 파일 libraries/vendor_config.php행을 변경합니다.

define('CONFIG_DIR', '');

로.

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

그리고.

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

로.

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

5.) apache 서버를 재시작하여 완료.

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

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

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

이것은 나에게 효과가 있었다.

페이지에서 에서 이 했습니다), 행을 (Ubuntu 18.04)./usr/share/phpmyadmin/libraries/plugin_interface.lib.php 포함

if ($options != null && (is_array($options) || $options instanceof Countable) && count($options) > 0) {
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

phpmyadmin 4.7.4는 "PHP 7.2와의 몇 가지 호환성 문제 수정"을 가지고 있어야 합니다.

이전 버전의 phpmyadmin이 있을 수 있습니다.

https://www.phpmyadmin.net/news/2017/8/24/phpmyadmin-474-released/

Ubuntu 18.04 LTS

이것은 나에게 효과가 있었던 단계입니다.Ubuntu PPA에서 자동 업데이트를 제공해 준 William Desportes에게 많은 감사를 표합니다.

스텝 1 (William Desportes 포스트에서)
sudo add-apt-repository ppa:phpmyadmin/ppa

2 서 22
sudo apt-get --with-new-pkgs upgrade

3 서 step
sudo service mysql restart

mysql을하는 데 mysql을 할 수도 .
sudo service mysql stop;
sudo service mysql start;

ubuntu-18.04 로 다음의 순서에 따릅니다.

순서 1) 검색sql.lib.php

다음과 같이 표시됩니다.

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

2단계) 단자(Alt t)를 열고 다음을 기록합니다.

sudo /usr/sbin/pma-configure

3의 3)sudo gedit /usr/share/phpmyadmin/libraries/sql.lib.php은 아래 함수로 해주세요.

 

PMA_isRememberSortingOrder 함수($analyzed_sql_results){$GLOBALS['cfg']['RemberSorting']를 반환하다&! ($sql_sql_sql['is_count'])|| $sql_sql['is_export']|| $sql_sql['is_func']|| $sql_sql['is_sql']
& $select_sql_sql['select_from']& (빈 sql_sql_sql['select_expr'])|| (count sql_sql['select_expr']== 1)& ('select_sql_expr'[0] == '*')& count sql _ sql _ seconds [ ' select _ seconds ' ) == 1 ;}

4단계) 위의 기능을 다음과 같이 교체합니다.


PMA_isRememberSortingOrder 함수($analyzed_sql_results){$GLOBALS['cfg']['RemberSorting']를 반환하다&! ($sql_sql_sql['is_count'])|| $sql_sql['is_export']|| $sql_sql['is_func']|| $sql_sql['is_sql']
& $select_sql_sql['select_from']& (빈 sql_sql_sql['select_expr'])|| ( count sql _ sql _ expr [ ' select _ expr ' ) == 1)& ($select_sql_expr['select_expr'][0] == '*')& count sql _ sql _ seconds [ ' select _ seconds ' ) == 1 ;}

4단계) 단말기에서 파일을 저장하고 닫는 다음 명령어

sudo /usr/sbin/pma-secure

순서 5) sudo service mysql reload

순서 6) sudo service apache2 reload

나한테는 효과가 있어.행운을 빌어요

다음 파일을 엽니다./usr/share/syslogmyadmin/sql.lib.php'

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

검색하려면 ctrl+w를 누릅니다(countsec_sql_sql['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/syslogmyadmin/syslog/syslog_interface.lib을 엽니다.php

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

검색: ($syslog != 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

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

Phpmyadmin을 이미 수정한 버전으로 업데이트하는 것이 가장 좋은 방법이라고 생각합니다.

deb로 발행될 때까지 @crimson-501 answer와 같이 할 수 있습니다.아래에 복사하겠습니다.

  • 는 공식 입니다.Ubuntu는 PMA(phpMyAdmin)를 사용합니다.apt-get install phpmyadmin.
  • 디렉토리: 음r/share cd usr/share 에 입력합니다.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.zipPMA를 사용하다PMA를 사용하다
  • 이번에는 '어울리다'를 해 볼까요?cp (복사) 파일 이동!파일을 이동해야 합니다.-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.

  • !!는!!!!!!!!! !!!!!!! !!!?nano config.inc.php그리고 이 페이지의 아래 근처에서:동적으로 생성된 비밀을 복사하https://www.question-defense.com/tools/phpmyadmin-blowfish-secret-generator.

예제 phpMyAdmin 조리 비밀 가변 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! */

이제 파일을 닫다.

  • 으로 PMA용.「 」 。PMA의 tmp에 의한 것입니다.mkdir tmp&chown -R www-data:www-data /usr/share/phpmyadmin/tmp하면 Apache 그 할 수 있습니다 마지막 명령과 내용을 편집하는tmp 디렉터리를 차지하기 위해 아파치 웹 서버 허용한다.

우분투 18.10(12월 2018년)

호선 613,614년, 615,으로 대체하는 것:.

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

날 위해 일해..우분투 18.04

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

count($analyzed_sql_results['select_expr']파일에 코드가 있습니다.~613.613.

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

코드로 대체합니다.

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

파일을 저장하고 PhpMyAdmin을 다시 로드합니다.

끝!!!

내 버전의 phpmyadmin(4.6.6deb5)에서는 613 행을 찾았는데 count() 괄호가 제대로 닫히지 않았습니다.다음 릴리스까지 이 문제를 일시적으로 해결하려면 다음 변경만 하면 됩니다.

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

대상:

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

이건 내게 효과가 있었어.

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

회선 번호: 614

2개의 코드를 교환해 주세요.

대체:

(count($analyzed_sql_results[‘select_expr’] == 1)

포함:

(count($analyzed_sql_results[‘select_expr’]) == 1)

그리고.

대체:

($analyzed_sql_results[‘select_expr’][0] == ‘*’)))

포함:

($analyzed_sql_results[‘select_expr’][0] == ‘*’))

저장, 종료 및 실행

sudo service apache2 restart

이 문제는 이후 버전의 PHPMyAdmin에서 수정되었습니다.Ubuntu Software Reposities for 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의 품질이라고 생각했던 것에 대한 완벽한 마법이었습니다.

UBUNTU 16.04.3에서 동작합니다.열기만 하면 됩니다

usr/share/sql.lib 입니다.php

수정하다

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

로.

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

Ubuntu 18.04에서는 잘 동작했습니다.

sql.lib.php 파일을 엽니다.

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

잘못된 코드를 바꿉니다.

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

이것으로:

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

파일을 저장합니다.

다음을 사용하여 서버를 재시작합니다.

sudo service apache2 restart

PhpMyAdmin 새로 고침

phpMyAdmin 4.8.3으로 업그레이드하면 PHP 7.2 호환성 문제가 해결됩니다.

'/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));"

안녕하세요, 다음은 같은 문제를 완전히 해결합니다(가져오기/내보내기 등).

Bug 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를 누르면 프롬트가 반환됩니다.

또, 다음과 같이 합니다. sudo systemctl restart apache2

"새로운 php 버전이라고 생각합니다.un 어레이 타입에는 count() 또는 sizeof()를 사용할 수 없습니다.이 버그를 해결하려면 파라미터를 어레이에 강제 적용하는 것이 간단합니다."

원저자가 문제해결해줘서 고마워요!공유하려고 노력해요!

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

행행 614 、 은은 、 phpmyadmin 、 mymy141414 。 필요 (*****)(전 의 '''가 있습니다'''가 표시됩니다.) 전에== 다야로로그그그그다다

돼요.count()에서 /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;
}

위의 모든 방법을 시도해 봤지만 효과가 없었습니다.

이것을 시험해 보세요:-

필요한 버전의 PHP(내 경우 7.0)를 설치한 후 터미널에 다음과 같이 입력합니다.

sudo update-alternatives --config php

출력은 다음과 같습니다:-

여기에 이미지 설명 입력

그런 다음 선택 번호(내 경우 1)를 입력하는 것만으로 임의의 버전의 PHP로 전환할 수 있습니다.

이것이 다른 것에 도움이 되기를 바랍니다.-)

'열다'를 열어보세요./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.

Ubuntu 18.04에 기반한 Linux Mint 19.1에서 PhpMyAdmin 4.6.6 및 PHP 7.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;
}

phpmyadmin ppa 추가

sudo add-apt-repository ppa:phpmyadmin/ppa
sudo apt-get update
sudo apt-get upgrade
add-apt-repository ppa:phpmyadmin/ppa
apt-get clean
apt-get update
apt-get purge phpmyadmin
apt-get install phpmyadmin

Ubuntu 18.04에서 고쳤어요

언급URL : https://stackoverflow.com/questions/48001569/phpmyadmin-count-parameter-must-be-an-array-or-an-object-that-implements-co

반응형