개발환경
window 10, XAMPP
Laravel 개발시 게시판 오픈 소스를 찾아보다가 무료 오픈소스인 라온보드를 테스트해보기 위해서 로컬환경에 설치를 하고 있었는데 다운로드 후 압축해제하고 루트를 지정해주자마자 에러가 발생했다.
preg_match(): Compilation failed: invalid range in character class at offset 29
정규식에서 뭔가 걸렸다는 말인데 해당 소스에서 에러가 발생하기전 정규식을 찾아보니 아래와 같은 정규식에서 에러가 발생을 했다.
Route::get('auth/reset/{token}', ['as' => 'reset.create', 'uses' => 'Auth\PasswordsController@getReset'])
->where('token', '[\pL-\pN]{64}');
[\pL-\pN]
이 정규식은 유니코드 정규식으로 문자와 숫자만 허용하는 정규식인데 OS와 설치된 웹서버에 따라 PCRE 버전과 파일의 인코딩 타입에 따라 안맞으면 발생하는 것으로 파악되었다. (정규식 사용 방법은 아래 참고 사이트를 확인하시길..)
물론 원인을 파악하여 허용하게끔 하는 것이 BEST 이지만 오픈 소스 구경이 목적이라서 위 부분을 아래와 같이 수정하였다.
Route::get('auth/reset/{token}', ['as' => 'reset.create', 'uses' => 'Auth\PasswordsController@getReset'])
->where('token', '[a-zA-Z0-9]{64}');
참고 :
PHP 유니코드 정규식 문법
https://www.php.net/manual/en/regexp.reference.unicode.php
WIndow Xampp 에서 해당 오류 발생시 해결 방법
https://stackoverflow.com/questions/8280630/how-to-enable-utf-8-support-pcre-xampp-for-windows
'Web > PHP' 카테고리의 다른 글
[ Laravel ] paginate 에 현재 쿼리 스트링 첨부하기 (1) | 2020.01.22 |
---|---|
[ Laravel ] Composer Cannot allocate memory error - Fixed (0) | 2020.01.09 |
[ Laravel ] DB Log 출력하기 (0) | 2019.11.18 |
[ Codeigniter ] 에러 출력하기 (0) | 2019.11.18 |
[ Laravel ] 블레이드 템플릿 문법 (0) | 2019.10.18 |
댓글