Tip & Tech

활용팁

홈 > 회원포럼 > 활용팁
활용팁

php-7.2.1 update 후 에러 사항 해결

2 해오름 14 1022 2 0

php-7.2.1 버전으로 업데이트 한 후 로그를 보면 에러 메세지가 주르륵 나옵니다.


php-7.2.1 업뎃 버전을 사용하고 싶은데 에러 때문에 고민하시는 분들께 에러 해결에 대한 팁 아닌 허접한 해결책을 알려드립니다.


이것을 수정하지 않아도 돌리는데 문제는 없는 듯하지만, 에러 로그가 쌓이는 게 거슬리시는 분들은 적용하시면 되겠습니다.


다음의 파일을 찾아 수정해 주세요.


/amina/head.sub.php line 98   _RESPONSIVE_ 를 '_RESPONSIVE_'
/amina/head.sub.php line 117   _RESPONSIVE_ 를 '_RESPONSIVE_'
/amina/_common.php  5라인 G5_COMMUNITY_USE 를 'G5_COMMUNITY_USE'
/amina/bbs/_common.php line 5  G5_COMMUNITY_USE 를 'G5_COMMUNITY_USE'
/amina/plugin/editor/cheditor5/editor.lib.php  line 18  G5_PUNYCODE 를 'G5_PUNYCODE'
/amina/lib/apms.lib.php  line 3438   $bo_cnt = count($bo) 를 ---> $bo_cnt = !empty($bo)로 수정한다.


파일 몇 개 안 됩니다.


현재까지 에러 난 파일만 수정했기 때문에 차후에 에러 메세지가 더 나올 수도 있겠지만 아직은 발생하지 않았습니다.


다들 아시겠지만, 허접한 팁 올려 봅니다.



14 Comments
좋은 정보 감사합니다.

Congratulation! You win the 7 Lucky Point!

M 한별아빠 01.27 00:30  
1. 감사합니다. 패치에 반영할 테니 혹시라도 오류가 발생한다면 오류코드 부탁 드릴께요. *^^*

2. 그런데, 그누 자체에서 수정해야 될 것도 있고, 아미나에서 패치해 될 것도 있네요.

3. 무엇보다 영카트쪽도 제법 될 듯 한데...ㅠㅠ
2 해오름 01.27 09:34  
그누 최신 버전
영카트 최신 버전
아미나 최신 버전

영카트는 설치되어 있지만, 아미나를 사용하기 때문에 Pass
그누 보드 최신 버전은 계속 사용 중

위의 소스 패치 후 아직까지 "그누 보드" or "아미나"에서 에러 메세지 발생하지 않고 있습니다.
혹, 에러 메세지 나오면 알려 드리겠습니다.
2 해오름 01.31 10:59  
아직 다른 에러 메세지는 없었는데, 아래 메세지 발생합니다.
서브메뉴가 5개가 있다면 맨 첫 번째 한개만 노출되고 나머지 4개는 보이지 않는 에러입니다.

count($bo) 관련

PHP Warning:  count(): Parameter must be an array or an object that implements Countable in /Shop/adm/apms_admin/apms.groupmenu.php on line 131, referer: https://...../Shop/adm/apms_admin/apms.admin.php?ap=menu

위와 같습니다.
M 한별아빠 02.05 00:48  
/adm/apms_admin/apms.groupmenu.php 파일 열어서 122라인에 $bo = array(); 라고 설정해 주고, $bo_cnt = (!empty($bo)) ? count($bo) : 0; 형태로 수정해줘 보세요.
2 해오름 02.06 23:05  
알려 주신대로 수정했지만, 여전히 5개의 서브 메뉴 중에 맨 첫번째 한 개만 보입니다.

count($bo) 가 있는 파일.

1.  /adm/apms_admin/apms.groupmenu.php  131 라인
2. /lib/apms.lib.php  2759라인, 3438 라인  2곳.

위 세 곳을 적절하게 수정해야 할 듯합니다.
M 한별아빠 02.07 01:40  
/adm/apms_admin/apms.groupmenu.php  파일은 $bo_cnt = $k; 형태로 수정해 줘 보세요.
좋은 정보 감사드립니다!
PHP 7.2.1 빨리 사용해보고 싶네요 ^^
6 여누여누 02.04 18:13  
감사합니다.
15 블루엔젤 02.08 23:29  
http://laonboard.com/bbs/free/views/283?output=json&page=2
2 해오름 02.12 13:41  
PHP-7.2.1 업세이트 후에 Amina 에러 발생 해결 (두 번째)

1.  에러 발생 부분의 소스 코드는 맨 위에 처음 올렸던 곳을 참조하여 수정해 주면 해결되었고

2.  다만, php-7.2.1로 업뎃하면서 그 외 다음과 같은 에러가 발생하였다.
PHP Warning:  count(): Parameter must be an array or an object that implements Countable.....

위와 같이 발생한 Amina 원본 소스 파일은 두 개이다.

A.  /lib/apms.lib.php  2759라인, 3440 라인  2곳.
    num = count($bo)  2759 라인
    $bo_cnt = count($bo)  3440 라인  <--  이 부분이 핵심 에러 발생 시작 점이다.

B.  /adm/apms_admin/apms.groupmenu.php  131 라인
    $bo_cnt = count($bo)  131 라인

위의 두 원본 파일에서 발생한 에러를 잡기 위한 첫 번째 조치는 다음과 같았다.
A.  /lib/apms.lib.php
    $bo_cnt = count($bo);  3440 라인을 다음과 같이 수정했다.
    $bo_cnt = !empty($bo);  // 이렇게 수정해 주니 에러 메세지가 사라져서 해결 된 줄 알았으나
                                          서브메뉴 5개 중에 맨 첫 번째 한 개만 보이고 나머지는 보이지 않았다.

이 에러를 해결하기 위해 "한별아빠"님 알려준 것 처럼 다음의 파일을 수정해 보았다.
B.  /adm/apms_admin/apms.groupmenu.php
    $bo_cnt = count($bo)  131 라인 원본 소스를 다음과 같이

    $bo = array();
    $bo_cnt = (!empty($bo)) ? count($bo) : 0;

위와 같이 수정했으나 여전히 서브 메뉴가 보이지 않았다. 또, 다시
    $bo_cnt =  $k;
와 같이 수정했으나 그래도 여전히 서브 메뉴가 보이지 않았다.


포기:  한별아빠 님이 패치해 줄 때까지 기다리기로...
        하지만, 업뎃해 놓고 쓰지 못한다는 허전함 때문에 재 도전해 봤다.

count() Countable 에러 해결을 위한 역 발상 두 번째 방법 시도.

A.  /lib/apms.lib.php
    $bo_cnt = count($bo);  3440 라인을 다음과 같이 수정했다.
    $bo_cnt = (!empty($bo)) ? count($bo) : 0;  //  이와 같이 수정해 보았다.
즉,
B.  /adm/apms_admin/apms.groupmenu.php 파일에 수정하려던 소스를  A.  /lib/apms.lib.php에 적용해 봤다.

두근두근 떨리는 심정으로 적용한 결과 에러 메세지도 사라지고 서브 메뉴도 모두 이상없이 잘 보였다.

*************
최종 정리
************
A.  /lib/apms.lib.php
    num = count($bo)  <-- 2759 라인  원본 소스 그대로 수정하지 않음.
    $bo_cnt = count($bo)  <-- 3440 라인을
    $bo_cnt = (!empty($bo)) ? count($bo) : 0;  <--- 이렇게

B.  /adm/apms_admin/apms.groupmenu.php

    $bo_cnt = count($bo)  131 라인 원본 소스 그대로 사용한다.

다만, 다음 각 경우와 같이 적용해 본 결과 모두 이상없이 작동은 하였다.
    $bo_cnt = count($bo) 원본

    $bo_cnt = $k  <--  수정 1
    $bo_cnt = (!empty($bo)) ? count($bo) : 0;  <-- 수정 2
    $bo_cnt = count($bo) ? current($bo) : null;    <--  수정 3  (이 코드는 검증 안 됨.  가급적 적용하지 마세요.)

위의 세가지 적용한 결과 모두 이상없이 작동했지만, 개인적 느낌으로는 $bo_cnt = $k  <--  수정 1 적용했을 때 응답 속도가 빠른 듯함.

************
결과론은
************
A.  /lib/apms.lib.php 파일
    $bo_cnt = count($bo)  <-- 3440 라인을
    $bo_cnt = (!empty($bo)) ? count($bo) : 0;  <--- 이렇게 한 곳만 수정하여 해결되었다는 것입니다.

저는 전문 프로그래머가 아니기 때문에 잘 모릅니다.
이 방법이 틀릴 수도 있습니다.
다만, 이 방법으로 적용하여 이상없이 잘 작동되고 있다는 것을 알려드립니다.

혹시라도 적용 후에 에러가 나온다면 또, 올리겠습니다.
M 한별아빠 02.12 16:16  
1. /lib/apms.lib.php 쪽은 로직 자체를 다 변경해야 되네요. 그래서 다음 패치 때 반영해 드릴 예정입니다.ㅠㅠ

2. /adm/apms_admin/apms.groupmenu.php 쪽은  $bo_cnt = $k; 만 해 주면 될꺼고...

3. 그런데 7.2에서 count()함수 때문에 좀 난리기는 하네요.ㅠㅠ
2 해오름 02.12 17:13  
항상
한별아빠 님께 감사드립니다.
현재, 아예 PHP-7.2.1 올려 놓고 운영해 보고 있습니다.
위와 같이 수정하고 면밀히 에러 메세지 확인하고 있는데 아직까지 별 이상없이 잘 돌아가고 있네요.

/lib/apms.lib.php 파일 로직을 완전 변경해야 한다니 괜히 미안할 뿐입니다.
보통일이 아닐텐데....

하지만, 다행인 것이 PHP-7.2.1 로 없뎃 하더라도 Amina 쇼핑몰은 count() 관련 뿐이라 안심입니다.

다시 한 번 항상 신속하게 대응해 주시는 한별아빠 님께 감사말씀 전합니다.
1 테츠히 07.18 12:17  
좋은글입니다.
제목
최근 글
최근 댓글
Facebook Twitter GooglePlus KakaoStory KakaoTalk NaverBand