New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
php7 에서 cond 문법 안되는거 해결 안되나요? #2237
Comments
이게 은근히 고치기 힘들어요 ㅜㅜ |
classes/template/TemplateHandler.class.php 파일을 아래와 같이 수정 후 확인 가능할까요? private function _parseInline($buff)
{
if(!preg_match_all('/<([a-zA-Z]+\d?)(?:\s)/', $buff, $match))
{
return $buff;
}
...
} |
cond, loop를 포함하는 태그만 걸러내던 것을 모든 태그 이름을 찾아내도록 단순화 했습니다. |
@bnu 마찬가지로 if 문이 아니면 안됩니다. |
cond="$comment->getProfileImage()" () 이런 문자가 영향을 주는건 아닌가요? |
@wookho 문제되는 템플릿 파일(코어의 것은 제외)의 크기(용량)를 알려주세요. |
@bnu raed.html 파일에서 comment.html 을 불러옵니다. read.html -> 36k 입니다. |
@bnu 지금 문제가 되는 템플릿 말고 직전에 문제가 되어 내용 일부 style을 덜어내고 해결했을때 상황입니다.
이게 템플릿에 작성된 코드였고.. 이렇게 되어 있었습니다. 혹시 정보가 될까 해서 적어보았습니다. cc : @kijin |
@wookho 음... 템플릿 핸들러가 잘못 해석할 만한 |
@kijin 오늘 발생한 문제는 비교적 간단한 |
@wookho 일부 코드에서 발생되어서 나타나는 문제일수도 있고 그래서... 이 부분은 재대로 스킨파일을 비누님께 제공해주세요.. 템플릿 오류는 다양한 원인때문에 생기거나 메모리리밋등 다양하게 있어서 직접적으로 구현할 수 있는 환경을 제공해주는 것이 확실하답니다.. 이렇게 댓글에 댓글이 길어지면 길어지기만 할뿐, 재대로 해결하기까지의 시간은 점점 늘어질 수 있습니다.. |
저 부분에서 오류가 발생했을 뿐, 실제 원인을 제공한 코드는 다른 곳에 있을 수도 있습니다. 템플릿의 특성상 한 군데가 잘못 해석되면 연쇄작용으로 줄줄이 밀리다가 엉뚱한 데서 터지거든요... |
@bjrambo 요청하신 파일용량까지 정보 제공 해드렸고 문제가 되는 템플릿들 다 드려야 하는 상황이 아닌 듯 합니다. 굳이 필요하다면 드릴 수는 있지만 저희 사이트에서 사용하는 부분이 굉장히 많이들어간 수정된 상용템플릿이라 용량확인 외 다른 것이 필요한지 아직 요청이 없어 드리지 않았습니다. |
그리고 지금 공통적으로 나타나는 현상이 템플릿 내용을 많이 줄이면 오류가 없어진다는 것 입니다. |
@wookho 템플릿관련 오류는 앞서 기진님께서 말씀하신 것 처럼 다양한 에러가 있고 진짜 용량의 문제가 있을 수 있어요.. 이 이슈의 비슷한 이슈가 있는 cameron위젯의 오류도 라이믹스에서는 전혀 문제 없는데 XE1에서는 문제가 발생하는 경우가 있습니다. (같은서버환경에서요..) 그만큼 메모리가 어디에서 빠져나가는지 등등을 확인할려면 그 환경을 그대로 구축할 수 있는 환경이 더 필요해요.. 그래서 템플릿 파일을 직접 개발자에게 제공해드리라는 말씀이였습니다. 마침.. 비누님께서도 제공해줄 수 있으면 이메일으로 메일을 전달해달라고 말씀도 하셨고요.. XE팀에서 제공해주신 템플릿을 마음대로 배포할 권리도 없을꺼요. 오류 해결을 위해 잠깐 쓰고 폐기 처분내릴 것 같은데, 일딴 제공을 하여 어디에서 문제가 발생되는지 명확하게 버그 찾을 수 있도록 해주시는 편이 좋을 것 같다고 제 의견을 드린 것 입니다. ㅎㅎ |
@wookho 상황만 짐작가능할뿐 실제 원인은 찾지 못합니다... 이 댓글을 마지막으로 저는 더 이상 이 이슈에 관여 안할께요. 죄송합니다. (_ _ ) |
@bjrambo 같은 템플릿이라도 제 서버가 아니면 확인이 어렵다는 의견입니다. |
지금 저희 서버에서 php7 으로 변경하면서 문제가된 스킨중 하나는
comment.html 파일입니다. pad 사이즈에서 프로필이미지를 보여주는 부분의 cond 조건이 걸리지 않는 문제입니다. 제 파일을 드리긴 어려울 것 같으니 이정도 정보를 알려드리겠습니다. |
@wookho public function __construct()
{
ini_set("pcre.jit", 0);
$this->xe_path = rtrim(getScriptPath(), '/');
$this->compiled_path = _XE_PATH_ . $this->compiled_path;
} |
@bnu 해당부분 추가해서 확인해봤는데 |
@wookho 브라우저 소스에서 PHP 버전 좀 알려주세요. PHP 업데이트 내역을 보니 관련해서 패치가 자주 있었네요.저는 PHP 7.1.12 버전에서 확인하고 있습니다. |
@bnu 소스가 노출되는 문제가 아니구요. cond의 조건이 동작하지 않는 문제입니다. cond="$comment->getProfileImage()" 조건에 만족하지 않는 프로필 이미지가 없는 회원의 이미지도 불러오는 현상이죠. 조건이 걸려있기 때문에 조건에 맞는 상황에서만 저 소스가 동작해야 하지만 조건이 없는 것이랑 같은 결과를 보여주는 것 입니다. |
@wookho 템플릿이 해석되지 않아 발생할 수 있는 증상일 수 있습니다만, 이 이슈에서는 프로필 이미지가 깨져보이는 것이 템플릿 파서의 문제인지 확인을 위해 소스보기에서 템플릿 문법이 그대로 노출되느냐 아니냐의 확인이 필요합니다.
|
개발자도구에서 본 것이구요.
소스보기 입니다.
말씀하신 부분이 소스에서 cond="$comment->getProfileImage()" 이부분이 보이냐고 물으신거면 맞습니다. |
@wookho 네. 맞습니다. 확인 감사합니다. |
- 일부 해결됨을 확인하였으나, 다양한 환경에서 문제가 여전히 나타날 수 있음
일부 환경에서 재현되고 해결이 확인된 내용으로 처리했습니다. |
@bnu 일부 환경에서 해결.. 저희는 해당 사항이 없는 것이군요.. 같은 템플릿에 바로 연이어..
이렇게 동일한 것들이 사용되는데 전혀 문제가 없는데 문제가 되는 경우가 참 신기합니다. 지금 위에 적은 것 보다 바로 위에 위치한 코드인데 그것은 문제가 되구요.. |
@bjrambo 스킨 파일 제공이 이 문제 해결임을 강조하는 것 좀 그렇습니다. 제가 BNU님과 이 문제를 해결하기 위해 노력을 했고 그리고 저도 나름 이문제에 관해 많이 공유를 받아봐서 제가 제 파일을 드린다해도 절대 bnu님이 가지신 서버에서 재현 못하는 것 알 고 있습니다. 차라리 제 서버에서 디버깅을 하겠다면 저는 그것을 원합니다. |
https://3v4l.org/UloFT |
@bnu 네. 해결책이 나오거나 혹은 제가 php 변경을 하기까지 문제가 발생하는 스킨들이 있다면 고쳐서 사용해 볼게요. |
@bnu 스킨 파일 드리면 될까요? |
@wookho XE문법은 정규 문법이 아닌 정규식으로 구현되고 있는 일종의 간이 스크립트 입니다. 즉 HTML을 파싱하여 구분한다고 해도 사용자가 어떻게 XE문법을 입력할 지 모르고 서버의 환경과 테스트 환경도 매번 다릅니다. 그래서 #2220 에서 @kijin 님이 서버 환경을 물어보신 것 같습니다. 이후 5.6 7.0. 7.1 7.2 모두 설치하여 테스트 했으나 해당 문제는 모든 환경에서 나타나고 있었습니다. (실제로 제가 1.7버전을 마지막으로 호스팅사에서 썼을때도 봤으니 매우 오래된 문제겠죠) 그래서 이미 현재의 XE문법을 기준으로 작성된 많은 프로그램들에 영향을 줄 수 있는 하이코스트 문제가 됩니다. (리스크도 크구요) 물론 좀 더 해당 환경을 재현하여 그러한 문제에 맞닿았을 때 우회할 수 있도록 제공을 부탁드리고 계신 것 같습니다. |
@wookho 주변에서 참견하는 거 아닙니다. XE 개발팀과 라이믹스 개발팀은 이런 종류의 문제에 대해서는 많이 협력하고 있습니다. 또한 코어 개발에도 참여해 보았고 템플릿 핸들러도 많이 건드려 본 사람으로서 이런 버그를 잡으려면 무엇이 필요한지 잘 알고 있기 때문에 말씀드린 것입니다. |
@wookho 네, 스킨 파일을 메일로 전달해 주세요. 지금 곧 XE에 적용할 수 있는 해결책이 나온다는 보장은 없습니다만, 어떤 문법의 어떤 조합이 문제를 일으키는지라도 찾아보겠습니다. |
@wookho kijin님과는 항상 의견을 주고 받고 있고, 이 이슈에 관해서도 별도로 많은 대화를 나눴습니다. 저는 또 다른 환경을 구축해서 살펴보도록 하겠습니다. |
@kijin 메일로 레이아웃,보드스킨 첨부해서 보내드렸습니다. 저희 사이트에 맞춰서 들어간 부분중 그냥 웃고 넘어갈 부분들은 넘어가 주세요. 말도 안되는 코드들도 많을 테니까요. |
@bnu 님 파일을 메일로 보내드릴지 여부 알려주세요. |
@wookho 네. bnu@xpressengine.com으로 부탁드립니다. |
@bnu 구글에서 차단한건지 공홈메이에서 차단한건지 바이러스가 포함될 우려가 있다고 전송을 차단합니다. |
@wookho 아. 그럼 bnufactory@naver.com으로 부탁드립니다. |
@wookho JS가 전송할 파일 내에 포함되어 있나요? 그런 경우 메일이 전송되지 않을 수 있습니다. 조금 특별한 압축 방식을 사용하거나 하셔야 할 것 같네요... |
@bnu 메일로 보낼수가 없어서.. 첨부 했습니다. 비밀글로 했구요. 레이아웃과 보드스킨이 css 등이 혼용되는 자료입니다. 저희가 사용하고 있는 그대로를 보내드립니다. 댓글 출력하는 부분에서 댓글 작성자 프로필이미지를 조건에 따라 출력하는 부분에서 문제가 발생하고 있습니다. 다운받으시고 게시글 삭제하시면 됩니다. |
@wookho 확인했습니다. 감사합니다. 문제가 재현됐으면 좋겠네요. |
@wookho 문제가 재현되었고 원인도 찾았습니다. |
@bnu 메일 하나 보내드렸습니다. |
템플릿에 오타가 있었던거군요. 그럼 오늘 코어에서 조금 변경된 코드로 왠만한 문제는 해결이 된다고 보는게 맞을까요? 저희 스킨의 문제로 괜한 시간을 보냈네요. 죄송합니다. |
@wookho 문제를 찾아서 속이 시원하네요. 다른 문제도 찾아서 고칠 수 있었고요. 감사합니다. 일단 제 환경에서(PHP 7.1.12, PCRE 8.38)에서 사이트맵 관리 페이지에서 발견하고, PHP 7.0 이상에서 발생할 수 있는 문제로 추정하고 있습니다. 해당 문제가 얼마나 많은 곳에 영향을 주었을지는 모르겠지만 유사 문제를 겪던 곳에서는 해결되었으리라 생각합니다. 정규식 관련 라이브러리와 PHP 자체 버그도 PHP 여러 버전에 걸쳐 고쳐지고있기 때문에 발견하지 못한 문제가 있을 수 있습니다. 이 이슈는 사용한 템플릿 코드에 문법 오류가 있었던 것으로 이슈를 종료합니다. |
@laiglinne-ff 확인 감사합니다 👍 |
집에 가야지 |
오늘 제 삽질이 완전히 헛 삽질은 아니었다고 위안해 봅니다 ㅡㅡ; |
@wookho 헛되지 않았어요 :) |
공홈에 알려진 내용등 모든 조치를 했지만
cond 조건이 무시되어서 조건에 맞지 않는 출력이 되어 곤란합니다.
이거 해결책이 도저희 없는건가요?
if 문으로 고쳐서 쓰기 힘드네요.
The text was updated successfully, but these errors were encountered: