물어보기XpressEngine
조회 수 129 댓글 25

XpressEngine Core 1.9.2 버전을 배포합니다.

1.9.2는 1.9.1에서 누락된 변경 사항을 포함합니다.

'Object' 클래스의 이름 변경으로 인해 업데이트 시 일부 서버 환경에서 문제가 발견되었습니다.
OPcache의 영향으로 보이며, 캐시를 유지하는 시간이 지나치게 길거나 시스템의 영향으로 보입니다.

파일을 변경하는 동작에서 시스템이 가지는 캐시(status cache)와 OPcache를 제거하는 동작을 추가했습니다.

OPcache 제거 안내

모든 사용자에게 해당되지 않으며,
OPcache로 인해 영향을 받은 서버에서는 다음과 같이 OPcache 일부를 제거할 수 있습니다.

'index.php' 파일의 OPcache를 무효화(캐시 재생성)하는 방법이며,
아래 두 방법은 같은 동작을 수행합니다.

shell 사용 가능 시

쉘에서 PHP CLI를 사용할 수 있다면 다음과 같이 할 수 있습니다.
오류가 발생하면 OPcache가 동작하고 있지 않은 환경일 수 있습니다.

$ php -r "opcache_invalidate(realpath('./index.php'), true);"

웹에서 호출하기

아래 코드를 자신만 알 수 있는 '파일명.php'로 생성하여 '도메인/파일명.php'를 브라우저에서 열면 됩니다.
(이 코드를 동일하게 담은 파일(_clean_opcache.php)을 내려받아 사용할 수 있습니다.)

<?php
if(!function_exists('opcache_invalidate')) {
	die('OPcache가 동작하고 있지 않거나 사용할 수 없는 상태입니다.');
}

if(strtolower(basename($_SERVER['SCRIPT_FILENAME'])) === '_clean_opcache.php') {
	$rename = uniqid('_clean_opcache.') . '.php';
	if(!rename($_SERVER['SCRIPT_FILENAME'], $rename)) {
		echo "파일 이름을 ${rename}으로 변경 후 <a href=\"./${rename}\">${rename}</a>를 실행하세요.";
	}
	else
	{
		echo '중복 실행 방지를 위해 파일 이름을 변경했습니다.<br>"_clean_opcache.*.php" 파일을 찾아 실행하세요(*는 랜덤 문자열입니다)', '<br><br>';
	}
}

opcache_invalidate(realpath('./index.php'), true);

echo 'Done!';

https://www.xpressengine.com/devlog/23251413

 

저희가 뭘 해야죠??????? 해야하나요????  

  • profile
    RayHur 2017.12.07 16:07:11

    웹지기님 라이믹스 1.8.46버전인데 1.9로 버전업해야 할까요? 초보자인 저에겐 요즘 타운 게시글만 봐도 버전업하기 손떨리고 무섭습니다. 

  • profile
    웹지기 2017.12.07 16:09:25

    전 라이믹스를 사용해 본적도 없는 사람이고 XE라는 전제로 저에게 질문하셔도 저는 뭐라 답을 드리기 어렵습니다. 사이트에서 기존부터 공통스크립트를 불필요하게 스킨단에서 많이 불러오고 있다면 문제가 발생할 수도 있습니다.(라이믹스는 이에 대비가 되어 있다고 전해들었습니다.) 하지만 이런 문제는 언젠가는 해결하고 넘어가셔야 할 문제로 업데이트때마다 회피하는 것은 저는 바람직하지 않다고 보고 항상 최신 코어로 유지하고 있습니다. 5년 넘게 항상 그래왔고 .....

  • profile
    RayHur 2017.12.07 16:15:23
    아 그렇군요 ... 조언 감사합니다. 제가 사용하는 호스팅 사양을 보면 php7.0인데 사실 버전업 하고 싶은데 혹시라도 최악의 상황이 발생하면 ... 이란 생각때문에 망설여 집니다.
  • profile
    socialskyo 2017.12.07 16:12:43
    ㅋㅋㅋㅋ.....

    늘 그래왔지만.... User friendly 하고는 참... 담을 쌓은듯 합니다.
    XE1이든 3든 계속 개발자 mind만 있는 분들에게 저런 사이트 관리, 대외 커뮤니케이션에 관련 된 내용은
    시키면 안될듯요.

    코알못인 제가 보기에는
    일반 호스팅 유저나, 해당 내용에 익숙치 않으신 분은 호스팅 업체에 연락 하시거나
    서버 터미널로 접속하셔셔 "OPcache How should I do" 를 입력하시고
    Oppa ignore it 이 출력된다면 해당 내용 무시하셔도 됩니다.

    뭐 이런 유저가 해볼만한 가이드라도 주던지... 해야지..원...
  • profile
    웹지기 2017.12.07 16:14:15
    저는 문제가 없었기 때문에 저런 것을 굳이 하지 않아도 되는지가 궁금해요.
  • profile
    socialskyo 2017.12.07 16:15:28
    저 글만 봐서는 저도 (당연히) 모르겠어요~ ㅎㅎ
  • profile
    웹지기 2017.12.07 16:16:47
    제가 왠만한 코드는 100번을 정독하면 대충 카피해서 흉내를 내볼라고 맘을 먹긴 하는데... 이 글은 1000번을 봐도 모르겠습니다 ㅋㅋ 누가 저 안내대로 해야 한다는건지 ㅋ
  • profile
    웹지기 2017.12.07 16:15:50
    모든 사용자에게 해당되지 않으며, <------ 모든 사용자는 할 필요가 없다?

    그럼 해야 할 사람은 누구라는걸까요 ???
  • profile
    기진곰 2017.12.07 16:19:03

    1.9.2까지 업데이트했는데도 계속 클래스가 없다느니 중복으로 선언되었다느니 하는 이상한 에러가 나는 사람만 해당됩니다. 그런데 사실 이 정도까지 가면 XE 문제가 아니라 호스팅 서버 세팅이 크게 잘못된 거죠. XE를 고칠 게 아니라 호스팅을 갈아타야 하는 상황일 텐데...

    3
  • profile
    웹지기 2017.12.07 16:20:30
    아이고 이렇게 쉬운말을 저 안내에는 왜 1도 찾을 수 없을까요... 흠......
    1
  • ?
    디이깅 2017.12.07 16:26:19
    "OPcache 제거 안내"
    앞부분에 업데이트 후 오류가 발생하는 일부 사용자만
    아래 내용 참고하여 OPcache 제거를 진행하면 된다고 적어주면 좀 더 좋을 것 같아요.
  • profile
    웹지기 2017.12.07 16:27:29
    그러게요. 저 안내문에는 모든사용자에게 해당되지는 않는다는 무척 짧은 표현 밖에 없어 이 의미가 뭘까를 해석해 내려는 상황이 벌어지네요.
  • profile
    기진곰 2017.12.07 17:14:59
    opcache를 제거한다고 하니 무시무시하네요 ㅠㅠ
    제거가 아니라 그냥 캐시만 비우는 건데...
  • profile
    Paul 2017.12.07 16:44:57
    "1.9.2는 1.9.1에서 누락된 변경 사항을 포함합니다." 이 문구가 1.9.2 에는 1.9.1 의 내용을 포함하고 있다는 건지. 아니면 1.9.1 에서 누락된 부분만 1.9.2 에 포함되었다는건지 저는 좀 이해가 안되네요. 그냥 단순히 1.9.0 에서 1.9.2 의 변경된 파일로만 업데이트 하면 되는건가요??
  • profile
    웹지기 2017.12.07 16:45:54
    1.9.1은 배포하지 않고 1.9.2 에 포함시켰다는 이야기 일겁니다. 제가 잘못 이해했다면 낭패 ㅋㅋ
    생각하신대로 업데이트 하시면 됩니다.
  • profile
    웹지기 2017.12.07 16:47:55

    댓글을 읽어보니 표현이 정말 그렇게 되어있네요.

    저는 배포하지 않았던 1.9.1의 변경사항까지 포함되어 있습니다 라고 그냥 이해해버렸었는데 다시 읽어보니 이해하기 힘든 표현이군요.

    배포하지 않아서 누락된 1.9.1의 변경사항을 1.9.2에 포함시켰습니다. 라고 이야기 하고 싶었던거 아닐까요 ???

     

    제목만 보는게 더 이해가 쉬울것 같네요 ㅋ 

    릴리즈 노트 XE 1.9.2(1.9.1 포함) 배포 안내 (OPcache 문제 수정)

  • profile
    Paul 2017.12.07 17:00:00
    웹지기님은 뭐든지 정확하게 일처리를 하시는 분 같아서 질문드려봤습니다. ^^ 네. 저도 말씀하신 대로 이해하려고는 하는데... 조금 찝찝한건 사실입니다. ^^ 답변 감사합니다!!
  • profile
    기진곰 2017.12.07 17:52:52

    아, 그리고 위에 소개된 내용 중 쉘(CLI)에서 실행하는 방식은 아무 효과가 없습니다. 쉘에서 쓰는 opcache와 웹(mod_php, CGI, FPM 등)에서 쓰는 opcache는 캐시 데이터를 공유하지 않기 때문에 쉘에서 캐시를 비워도 웹에서는 비워지지 않습니다 ㅡ.ㅡ

     

    정말로 opcache 때문에 문제가 있다면 아래와 같은 내용으로 파일을 만들어 웹에서 호출해 주는 것이 좋습니다.

     

    <?php opcache_reset(); ?>

     

    문제가 있을 때만 해야 합니다. 캐시를 너무 자주 비우면 사이트 성능이 나빠지고, 웹호스팅이라면 다른 사이트의 캐시에도 영향을 줄 수 있습니다.

  • profile
    사과맛스타 2017.12.08 08:59:54
    그러고 보니 php cli와 php 웹서비스 (php-fpm 이나 fastcgi 같은) 방식은 아예 별개로 알고 있었는데 쉘에서 실행하는 방식은 의미가 없겠네요.
  • profile
    휘즈 2017.12.07 18:15:29

    제가 이해한 대로 풀어서 쓰면
    1.9.1에서 XE코어의 버그수정은 다했다.
    그럼에도 에러가 발생한다면 서버에서 만드는 캐시가 변경안되서 그런 것이다.
    시간이 지나면 자연 변경되겠지만 캐시파일 유지 시간이 길어서 변경이 안된다면 opcache를 비우는 코드를 1.9.2포함했다. 그러니 언급한 내용대로 수행해라.
    저는 이렇게 이해했습니다.

    1
  • profile
    웹지기 2017.12.07 18:16:29
    저는 저걸 안했을 경우 어떻게 되는지에 대한 그리고 했을때 위험한 것은 없는지 또는 해야 되면 누가 해야하는지 등이 궁금했습니다.
  • profile
    휘즈 2017.12.07 18:26:45
    에러가 발생 안한다면 당연히 할 필요없고,한다면 버전업정도의 의미가 있을 것이고,
    에러가 발생한다면 opcache영향이 있는 서버일 것이니 실행하여는 것이고
    서버운영자라면 원인만 알려주면 서버운영자가 해결할 수 있으니 Xe팀에서 궂이 1.9.2를 배포할 필요가 없으나
    호스팅 사용자는 서버를 콘트롤할 수 없으니 호스팅 사용자를 위한 배려라고 보아야 할 것 같습니다.
    opcache야 그냥 캐시파일인데 지우면 새로 생성되는 것이고 위험성이 있겠습니까?
  • profile
    사과맛스타 2017.12.08 09:01:52
    이게 진짜 올바른 내용같네요.
  • profile
    휘즈 2017.12.07 18:34:36
    아 이게 1.9.1에 대한 업데이트 안내가 없어져서 그런 것이군요.
    아마도 1.9.1업데이트 안내를 수정해서 1.9.2안내문을 작성한 것 같습니다.
    "1.9.1포함" 이란 문구는 1.9.1에 대한 안내문을 포함한다는 의미인 것 같습니다.

    1.9.1을 다운받은 37인 중 하나
  • ?
    민우 2017.12.07 19:11:36
    저도 이해가 불가능합니다.

서버에 요청 중입니다. 잠시만 기다려 주십시오...