https://xetown.com/lakepark/109198

문제제보는 이쪽에서 처리합니다.

 

==============================================

 

어젯밤 XE TOWN의 php를 PHP7로 업그레이드하였습니다.

그 결과 비교적 속도는 빨라졌지만, 여러가지 문제점이 남아있습니다.

1. [해결완료] 관리자 페이지 메뉴편집에서 메뉴가 나오지않는 문제

https://github.com/qkrcjfgus33/xe-core/commit/6adfc7764ba05da95fd74b075b8c90dc227cbb0c

 

2. [해결완료] 본문에 이미지 삽입이 되지않는 문제

등록하면 어딘가에서 하는 필터링에 의해 아래와 같은 코드로 변경됨 .

<img alt="" data-file-srl="" editor_component="" src="" />

 

태그의 속성값을 전부 없애버림.

관리자 계정으로는 해당문제가 나오지않음.

 

기진곰님의 해결방법!

https://xetown.com/square/108807#comment_109087

 

3. [해결완료] 출석부 (소시랑 스킨 문제)

심각한 에러를 뿜어냄.

XE타운에서 사용하는 소시랑 스킨 문제였음.

ereg 구식함수가 에러를 이르킴.

preg_match으로 교체함.

 

 

이외의 다른 문제점을 발견하시면 신속히 CONORY에게 알려주세요 ~

게시물 수정에 의해 계속 문제가 추가될 것입니다.

 

  • profile
    관리자 페이지 에서 대시보드 화면 깨지지 않던가요? 전 대시보드 화면이 안되던데요!!
  • profile profile
    글쎄요. 그런 문제는 없었습니다.
  • profile

    이미지 속성 문제는 HTML Purifier 라이브러리가 PHP 7과 호환되지 않아서 생기는 것 아닐까요?

    근데 이게 언제 업데이트될지 기약이 없네요 ㅠㅠ

  • profile profile
    아...네...;
  • profile profile
    HTML Purifier랑 관계 없습니다.
  • profile profile

    아, 그렇네요. htmlpurifier.org에 "PHP 5 only"라고 되어 있어서 혹시나 했는데...

    HTML Purifier 호출 전에 XE에서 처리하는 부분이 문제군요 ㅠㅠ

  • profile profile
    넵 ㅠㅠ 저도 찾아서 후코멘트 달려고 했더니..! 이미 달으셔서..ㄷㄷ
  • profile

    이미지같은 경우에는 어떤 방법을 써도 등록이 안되네요 -_-;;

    PHP7+XE의 경우에 이미지 등록이 안되는 현상이 발생하는거라면 무조건적으로 발생하는건 아닌것 처럼 보이는데요(제가 방문하는 어떤 사이트가 PHP7+XE로 알고있어요), 다른 부분에서 한번 문제가 있나 알아봐야겠네요.

  • profile profile
    네.
  • profile profile
    확인해보니 PHP7+XE 환경에서 현재 이미지 등록이 안되는거 맞네요 ^^;;
  • profile profile
    이미지 삽입뿐만 아니라 글자색같이 태그에 속성을 넣을 수 없는 문제입니다.
  • ?
    php7 아직 시기상조인듯.
  • ? profile
    하지만 더 심각한 문제는 발견되지않은 것 같아요.
  • profile
    php7은 XE 1.9에서나...
  • profile profile
    1.9 기약이 없습니다. 현재 개발팀모두 XE3에 매달려있으니....;
  • profile profile
    그렇네요 XE3 출시후에도 1.9는 음.. 기약이..
  • ?
    mb_ereg 함수는 쓸 수 있을텐데... php7에서는 그것까지 못쓰게 되었나요?
  • ? profile

    http://php.net/manual/kr/function.ereg.php
    처럼 매뉴얼에 Warning 항목이 있으면 php7에서 사용할 수 없다고 봐야겠죠.

  • profile
    네 맞아요 첨부는 되는데 값이 날라가는 거져.......
  • profile

    이미지 삽입 및 태그속성 삭제되는 문제 해결방법

     

    config/func.inc.php 1203줄

     

    아래의 소스를 (모두 한 줄입니다)

     

    $val = preg_replace('/&#(?:x([a-fA-F0-9]+)|0*(\d+));/e', 'chr("\\1"?0x00\\1:\\2+0)', $m[3][$idx] . $m[4][$idx]);

     

    아래와 같이 변경합니다 (모두 한 줄입니다)

     

    $val = preg_replace_callback('/&#(?:x([a-fA-F0-9]+)|0*(\d+));/', function($n) { return chr($n[1] ? ('0x00' . $n[1]) : ($n[2] + 0)); },  $m[3][$idx] . $m[4][$idx]);

     

    preg_replace 함수의 /e 옵션은 꽤 오래 전부터 Deprecated되어 있었는데, PHP 7에서 드디어 없어져 버렸습니다. 그래서 똑같은 기능을 preg_replace_callback 함수와 클로져를 사용하여 구현해야 합니다.

  • profile profile
    엌..! 저도 방금 달려고 했는뎃..! 그렇군요..ㅋㅋ 전 그냥 e를 i로 바꿨거든요..--;;
  • profile profile
    /e를 /i로 바꾸면 기능이 전혀 달라져요~ ㅎㅎ

    다행히 검색해 보니 코어의 다른 곳에는 /e를 사용하는 곳이 안 보이네요.
  • profile profile
    ㅋㅋㅋㅋㅋ 일단 막 디버깅하다가 저기서 값이 날라가서..ㅋㅋ

    php에서 찾아보니까 e가 대문자로 바꾸는 거더라구요..-_-;; 그래서.. 어... 뭐.. 문제 부분만 찾으면 고수분들께서 알아서 해주겠지 라는 생각에 댓글을 달려고 보니까 기진곰님께서 이미 댓글이 뙇..!
  • profile profile
    그나저나 preg_replace도 곧 사라질 함수던데..ㅠ 맘아프네요..크... 자주 썼던 건데..ㅠ
  • profile profile
    대문자로 바꾸는 게 아니라 그 다음 파라미터의 내용을 eval하는 거예요.
    사용자가 입력한 내용을 막 eval해 버리는 무시무시한 녀석이라 이번에 퇴출됨 ㅎㄷㄷㄷ
  • profile profile

    앜ㅋㅋㅋㅋ

     

    이제보니 대충 봤네요

     

     

    Example #4 'e' 변경자 사용하기

    <?php
    preg_replace
    ("/(<\/?)(\w+)([^>]*>)/e"
                 
    "'\\1'.strtoupper('\\2').'\\3'"
                 
    $html_body);
    ?>

    위 예제는 입력된 텍스트의 모든 HTML 태그를 대문자로 변경합니다.

     

     

    이것만 보고 대문자로 바꾸는 거구나 했는데 뒤에 함수보니 stroupper로 바꾸는 거였군..ㄷㄷ

     

    preg_replace로 eval을 바로 할 수 있는지 처음 알았네요....그리고 이제 기억속에서 지워야 겠네요..-_-;;

  • profile profile
    그건 안 없어집니다! 없어지는 건 ereg이죠... preg이 없어지면 정규식은 어떻게 쓰라고요 ㅠ
  • profile profile

    앜 제가 멍청하네요..ㅠㅠ

    이것도 대충봤더니 잘못 봤네요

    말씀처럼 e 이렇게 쓰는게 없어지는거네요...ㅋㅋㅋㅋㅋ preg_replace가 사라지는 게 아니고..ㅠㅠㅠㅠㅠ

     

    아이고야 뻘쭘...



    preg_replace() function no longer supports "\e" (PREG_REPLACE_EVAL). preg_replace_callback() should be used instead.

  • profile profile
    앗! 감사합니다..ㅎㅎ
  • profile profile

    해결됐나 테스트중... 우왕 된다!

  • profile
    수고하셨어요^^
    반응 속도가 그전에 비해 빨라진것 같긴하네요. (엄청 큰 차이는 아니지만)