우분투 APT 저장소에 기본으로 있는 아파치, 마리아DB, PHP, phpMyAdmin을 설치했었습니다. 2018년 10월 5일 기준으로 버전을 보면 아파치 2.4.29 / MariaDB 10.1.34 / PHP 7.2.10 / phpMyAdmin 4.6.6deb5 네요. 아래 phpMyAdmin 스크린 샷에서 정보 참고하고요,

 

 

phpMyAdmin 에서 “일반 릴레이션 기능 사용불가” 증상은 쇼핑몰 사이트를 만들지 않는 이상 문제될 것이 없다고 해서 고치지 않고 쓰고 있는데, phpMyAdmin 4.6.6 버전에서는 “서버 에러”라는 이상한 문제 증상이 추가적으로 나타나더군요. 스샷 한 번 찍어봤습니다.

 

▲ 서버 에러가 감지되었습니다! 이 창의 아래쪽을 보세요.

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,

NULL,

NULL,

NULL,

NULL,

NULL,

NULL,

블라블라~~~

)

./sql.php#221: PMA_executeQueryAndSendQueryResponse(

array,

boolean true,

NULL,

NULL,

NULL,

NULL,

NULL,

블라블라~~~

)

 

왠지 해결해야만 할 것 같은 느낌이 강하게 듭니다.ㅠㅠ

구글링.

영문 포럼에서 힌트가 될 만한 글을 찾았습니다.

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

위 글에 나온 다양한 해결책들 중 제가 효과를 봤던 방법을 적어볼게요.

 

 

/usr/share/phpmyadmin/libraries/sql.lib.php 파일을 에디터+루트 권한으로 엽니다.

저는 bluefish 에디터로 열 거라, 터미널 창에서

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

라고 입력했습니다.

 

▲ || (count($analyzed_sql_results['select_expr'] == 1) 부분을 찾습니다(Ctrl+F 로 찾으면 쉡겠죠?).

저는 613번째 줄에서 찾았네요. 서버 에러 메세지에서 봤던 Warning in ./libraries/sql.lib.php#613 과 위치가 일치하는 듯합니다.

 

615번째 줄을 보면 괄호 닫히는 곳이 == 전이죠? 그런데 613번째 줄은 숫자 1 뒤에서 끝났죠?

이게 포인트입니다.

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

이렇게 숫자 1 뒤에 붙은 괄호를 615번째 줄처럼 == 앞으로 옮겨 주세요. 그리고 저장+빠져나옵니다.

 

처치 끝.

phpMyAdmin 로그아웃+재로그인 해봅니다.

에러 메세지가 사라졌다면 성공한 겁니다.

 

--------------------------------------

 

2018. 12. 22. 추가.

 

아래 스크린 샷과 같은 서버 에러 문제를 다시 겪게 되었습니다.

 

▲ 이번에는 ./libraries/plugin_interface.lib.php#551 경로네요.

 

/usr/share/phpmyadmin/libraries/plugin_interface.lib.php 파일을 에디터+루트 권한으로 열어야 하겠습니다.

저는 bluefish 에디터로 열 거라, 터미널 창에서

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

라고 입력했습니다.

 

▲ 551째 줄로 이동합니다. if ($options !=null && count($options) > 0) { 라고 나와있을 거예요.

&& count($options) > 0 부분을 삭제하는 식으로 대응하면 되더군요.

저는 원본 코드를 남겨두고 싶어서 551째 줄 코드 앞에 // 를 붙여 주석처리하고, 아랫줄에 if ($options !=null) { 이라고 삽입하는 식으로 처치했습니다.

 

저장+빠져나온 다음 웹브라우저에서 phpMyAdmin 로그아웃+재로그인 해봅니다.

에러 메세지가 사라졌다면 성공한 겁니다.

반응형