> 백엔드 개발 > PHP 튜토리얼 > PHP5.2_php 팁에서 preg_replace 함수 관련 문제

PHP5.2_php 팁에서 preg_replace 함수 관련 문제

WBOY
풀어 주다: 2016-05-16 20:16:14
원래의
1083명이 탐색했습니다.

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이라고 합니다
제한은 없습니다

이 글을 자세히 쓰는 이유는 문제 해결을 위한 제 생각을 공유하기 위해서입니다 :)

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿