본문 바로가기
Web/PHP

[ Laravel ] 라온 보드 설치시 preg_match 오류 해결

by 기저귀찬개발자 2020. 1. 2.

개발환경 

window 10, XAMPP 

 

http://laonboard.com/

 

라온보드

라온보드, 라라벨, laonboard, laravel

laonboard.com

 

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

 

PHP: Unicode character properties - Manual

these properties are usualy only available if PCRE is compiled with "--enable-unicode-properties" if you want to match any word but want to provide a fallback, you can do something like that:

www.php.net

WIndow Xampp 에서 해당 오류 발생시 해결 방법

https://stackoverflow.com/questions/8280630/how-to-enable-utf-8-support-pcre-xampp-for-windows

댓글