워드프레스 테마나 플러그인 설치 시 다음과 비슷한 오류가 발생하는 경우:
Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in /home/.../wp-content/themes/.../xxxxx.php on line 111
테마나 함수에 익명함수(Anonymous function)가 사용될 경우 이와 같은 문제가 발생할 수 있습니다.
익명함수란...
$greet = function($name) { printf("Hello %s\r\n", $name); }; $greet('World'); $greet('PHP');
익명함수는 일반 함수와 비슷하지만, 이름에서 알 수 있듯이 익명함수는 이름이 없습니다. 위의 코드는 http://php.net/의 Anonymous functions 페이지에 나온 익명함수의 예입니다. 여기에서
- function 키워드와 시작 괄호(')') 사이에 함수 이름이 없습니다.
- 함수 정의 다음에 세미콜론(;)이 있습니다. 이것은 일반함수 정의는 "코드 구문"인 반면 익명함수 정의가 "표현식"이기 때문입니다(PHP Anonymous Functions: What Are They, and Why Use Them? 참고).
문제 해결 방법
익명함수는 PHP 5.3 버전부터 도입되었습니다. 그러므로 PHP 버전을 5.3 이상 버전으로 업그레이드하면 문제가 해결됩니다. PHP 버전을 확인하려면 phpinfo() 함수를 사용하면 됩니다.
웹호스팅 서비스를 이용하는 경우 호스팅업체에서 쉽게 PHP 버전을 업그레이드할 수 있는 옵션을 제공하기도 하지만, 그렇지 않을 경우 호스팅업체에 연락하여 PHP 버전 업데이트를 요청해야 합니다.
이 방법을 통해 문제를 해결할 수 없는 경우 테마 제작자나 플러그인 제작자에게 연락하여 문제 해결을 요청하도록 하십시오.
추가: PHP 버전을 업그레이드할 수 없는 경우
PHP 버전을 업데이트할 수 없는 경우:
먼저 문제가 되는 부분의 함수를 찾습니다.
add_action('widgets_init', function() { return register_widget('Fanoe_Social_Media_Widget'); });
문제가 되는 함수가 위와 같은 함수 형태라면 아래와 같은 형식으로 수정해보도록 합니다(참고).
// Fanoe_Social_Media_Widget 등록 function register_fanoe_social_media_widget() { register_widget( 'Fanoe_Social_Media_Widget' ); } add_action( 'widgets_init', 'register_fanoe_social_media_widget' );
그러면 임시로 문제를 해결할 수 있을 것입니다.
2018년 추가 - 워드프레스
2018년 현재 워드프레스 권장 PHP 버전은 7.2입니다.
워드프레스에서 권장 PHP 버전을 7.2 이상으로 조정
워드프레스를 사용하는 경우 가급적 7.1 혹은 7.2 이상을 사용하는 것이 바람직합니다. PHP 5는 2018년 12월 말에 지원이 종료되기 때문에 지원이 종료된 후에는 안전하지 않을 수 있습니다.
PHP 5가 2개월 후에 수명이 종료되어 보안 업데이트가 중단됩니다
참고로 해외 호스팅 사이트그라운드에서는 현재 PHP 7.3까지 지원합니다. Bluehost 공유호스팅의 경우 2018년 11월 현재 PHP 7.0까지 지원하지만 조만간 새로운 PHP 버전에 대한 지원을 추가할 예정이라고 합니다.
※ 2019년 12월 업데이트: SiteGround에서는 PHP 7.4까지 지원하고 블루호스트는 PHP 7.3까지 지원합니다("블루호스트에서 PHP 버전과 PHP 환경 설정값 변경하기 (새로운 cPanel 인터페이스)" 참고).
※ Parse error: syntax error, unexpected '.', expecting '&' or T_VARIABLE in /host/home/xxxxxxx/html/wp-content/plugins/post-terms-order/include/pto_walkers.php on line 135와 비슷한 오류가 발생하는 경우에도 PHP 버전을 업그레이드하면 문제가 해결됩니다.
댓글 남기기