Skip to content
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

PHP 7.2에서 배열이 아닌 것에 count()를 사용하여 발생하는 오류 수정 #2377

Open
wants to merge 2 commits into
base: develop
Choose a base branch
from

Conversation

kijin
Copy link
Contributor

@kijin kijin commented Feb 13, 2019

PHP 7.2 이상 버전에서는 배열이나 countable object가 아닌 것에 count() 함수를 사용하면 오류를 뿜습니다. 예전부터 배열이 아닌 것에도 흔히 사용하던 함수인데, 갑자기 에러 레벨이 확 올라가 버렸어요. (수정: 커밋 메시지와 달리 현재는 Fatal Error는 아닙니다. 변수가 countable인지 확인하는 함수는 PHP 7.3에서야 추가되었습니다. 앞뒤 안 가리고 무척 빨리 바뀌고 있는 것 같으니 차기 버전에서는 아예 Fatal Error가 되어 버릴지도 모르겠네요.)

이 문제 때문에 특정한 상황에서 오류가 발생하는 것을 발견하여, 반드시 배열 여부를 확인한 후 count() 함수를 사용하도록 수정합니다.

이것 외에도 count() 함수를 사용하는 곳은 많지만, 일단 오류가 발생할 여지가 있는 곳만 수정했습니다.

참고: rhymix/rhymix@6f35f5b

@ghost ghost self-assigned this Feb 18, 2019
@ghost ghost added this to the 1.11.3 milestone Feb 18, 2019
@wookho
Copy link

wookho commented Mar 15, 2019

이 pr을 적용하니
DBMysqli_innodb.class.php에서 PHP Fatal error: Allowed memory size of 268435456 bytes exhausted 에러가 납니다. 500에러로 사이트 접속이 안되어 원복했습니다.

@tychetic
Copy link

tychetic commented Mar 15, 2019 via email

@wookho
Copy link

wookho commented Mar 17, 2019

@tychetic 이 PR을 저희 사이트에 적용하니 위와 같은 에러로 인해 사이트가 접속이 안되고 500에러가 출력된다는 보고입니다.

@bjrambo
Copy link
Contributor

bjrambo commented Mar 17, 2019

@tychetic 이메일로 전달 받으신 내용을 그대로 무슨내용인지 확인하지 못하여 생기는 오해같습니다.
더 이상 깃허브에서 XE-core프로젝트에 대해서 이메일을 받고 싶지 않으실 경우
https://github.com/ 에 들어와서 이메일으로 받는 notification 설정을 확인하여 받지 않도록 해주시면 감사하겠습니다 :)

@ghost ghost modified the milestones: 1.11.3, 1.11-next Mar 25, 2019
@wookho
Copy link

wookho commented May 3, 2019

문제가 생긴다고 말씀드렸던 부분의 현상이 아마도 모든 위젯의 출력쪽에서 문제가 되는 듯 합니다. 페이지,아이템목록 갯수 등이 설정된 갯수가 아니니 무한대로 쿼리가 되어 메모리가 폭주되어 다운 되는 것 같습니다.

오늘 다시 제가 직접 수정하지 않고 수정된 파일을 내려받아 증상을 보려고 시도를 해보니 역시 웹사이트가 다운되어 다시 원복하면서 모바일쪽에서 페이지에 넣어놓은 위젯들이 출력되는데 페이지가 엄청나게 많은 페이지가 출력되고 목록또 굉장히 많은 목록을 쿼리해서 출력하는 것이 목격되었습니다.

@kijin @bnu

@ghost ghost added the type/discussion label May 3, 2019
@ghost ghost removed this from the 1.11-next milestone May 3, 2019
@kijin
Copy link
Contributor Author

kijin commented May 10, 2019

@wookho @bnu 일부 문제를 일으키는 부분의 조건문을 조정했습니다. 다시 확인 부탁드립니다.

@wookho
Copy link

wookho commented May 10, 2019

@kijin 방금 바꿔주신 부분 사이트에 다시 적용해 봤습니다. 쿼리수량이 제한되지 않아 메모리가 즉시 소진되어 다운되는 현상이 없어졌습니다.

살펴주셔서 감사합니다. XE코어에서 꼭 고쳐져야 할 부분인 듯 해서 사이트에 먼저 적용해 보려 시도했을때 다운되는 현상이 있어 저희 사이트가 특별한 오류를 가지고 있는 지 무척 걱정되어 저희 사이트에서의 현상을 알려드리게 되었습니다.

잘 살펴봐주셔서 이상이 없게 고쳐진 것 같습니다. 검토해주셔서 감사합니다.

@ghost ghost removed their assignment Apr 16, 2020
dorami added a commit to daolcms/daolcms that referenced this pull request Jun 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants