preg_replace는 php5.2에서 허용하는 기본값보다 더 많은 바이트를 사용하는데, 이는 pcre.backtrack_limit 및 pcre.recursion_limit의 크기 문제입니다.
Disuz! 6.0.0 프로그램 정식 출시 이후 다들 업그레이드 하느라 분주한데, 일부 플러그인이 6.0 미만에서 문제가 발생하고 있습니다
예를 들어 http://www.discuz.net/viewthread.php?tid=559133 이 뱅킹 플러그인
PHP 5.2.0 이상 환경에서는 설치 후 흰색 화면 문제가 발생합니다
Disuz! 사용자의 관점에서 이 문제를 해결하려면 플러그인 작성자를 지원해야 합니다
다음은 제 해결 과정입니다. 몇 가지 제안을 드릴 수 있기를 바랍니다
첫 번째: 이 플러그인은 5.5 미만에서는 정상적으로 실행될 수 있지만 6.0 미만에서는 화면이 흰색으로 표시됩니다
템플릿 캐시 파일의 가독성을 높이기 위해 Discuz!6.0에서는 캐시 파일 들여쓰기를 늘렸고 실제로 template.func.php의 일부 템플릿 처리 부분을 수정했습니다.
이것이 이유일까요? 처음에는 5.5 코드의 일부로 수정된 코드를 교체한 후 정상적으로 동작하기 때문에 처음에는 여기에 문제가 있다고 판단했는데, 매우 우울하고 원인을 찾을 수 없었습니다
두 번째 단계:bank.htm 템플릿의 작성 형식에 문제가 있는 것으로 의심되어 매우 우울하게 템플릿을 분석하기 시작했습니다. 솔직히 템플릿을 분석할 때 머리가 아팠습니다. 너무 커요. 분명히 이유가 발견되지 않았습니다. 더 우울하네요
두 번째 단계: 그러다가 이 템플릿을 분할한 후 정상적으로 실행되는 것을 발견했습니다. 이때 처음에는 데이터 양이 많을 때 일반 매칭 버그가 오류를 일으키는지 의심스러워서 bugs.php에 접속했습니다. .net 검색을 시작했습니다 http://bugs.php.net/search.php?c... ace&x=3&y=5 여기에서 검색하고 검색하다가 드디어 이런 곳을 발견했습니다http://bugs.php.net /bug.php?id=39405 갑자기 5.2 구성에 문제가 있다는 것을 발견하고 pcre.backtrack_limit 및 pcre.recursion_limit를 조정한 후 문제가 해결되었습니다
php.ini에서는 pcre.backtrack_limit=-1이라고 합니다
제한은 없습니다
이 글을 자세히 쓰는 이유는 문제 해결을 위한 제 생각을 공유하기 위해서입니다 :)