PHP 8 마이그레이션을 위한 리포트를 생성하자
PHPPHP 공식 지원 기간 확인
PHP는 다른 언어와 달리 LTS 버전이 존재하지 않습니다. 그에 따라 최소 3년에 한 번씩 PHP 버전을 올려야 주기적인 보안 지원을 받을 수 있죠. 버전 별 지원 기간은 PHP 공식 홈페이지에서 확인 가능합니다. 사용하는 버전이 언제까지 보안 지원을 하는지 확인하고, 종료 시기가 다가오면 버전 마이그레이션을 준비합시다!
? 장기 지원 버전 Long Term Support
일반적인 경우보다 장기간 지원하도록 선언한 소프트웨어 버전을 의미한다.
PHP 마이그레이션 준비
버전에 따른 변경 사항을 적용하기 위해 한땀한땀 모든 코드를 수작업으로 살펴볼 수 없는 노릇입니다. 코드가 많든 적든 사람의 손으로 살펴보면 누락될 여지가 높습니다. 그러므로 PHP 마이그레이션을 위해 적절한 도구를 선택할 줄 알아야 합니다.
그 중에서 대표적인 PHP 정적분석툴인 PHP CodeSniffer
와 마이그레이션 보조 도구인 PHP Compatibility
를 통하여 PHP 버전 업을 위한 마이그레이션을 준비할 수 있습니다. 이를 통해 버전 업 시 어떤 코드에서 이슈가 발생할지 사전에 파악하고 작업할 수 있죠. Composer
를 통해 PHP CodeSniffer
와 PHPCompatibility
를 설정해볼까요?
? 신규 버전이 나온 직후에는 PHPCompatibility가 마이그레이션 리포트를 지원하지 않을 수도 있습니다. 리포팅 도구가 아직 지원하지 않는 버전이라면 기다리거나 하위 버전을 선택합시다.
마이그레이션 리포트 도구 의존성 추가
Composer
를 통하여 글로벌로 의존성을 추가하겠습니다.
composer global require "squizlabs/php_codesniffer=*"
composer global require "phpcompatibility/php-compatibility=*"
PHP Compatibility 설정
글로벌에 의존성을 추가했으니 composer
글로벌 경로를 알아둡시다. 글로벌 경로는 PHP CodeSniffer
에 PHPCompatibility
를 연동할 때 필요합니다.
composer global config home
PHP CodeSniffer, PHP Compatibility 연동
phpcs -i
# The installed standards are MySource, PEAR, PSR1, PSR112, Squiz, Zend and PHPCompatibility
CodeSniffer
에 PHPCompatibiliry
가 포함되어 있으면 기본적인 설정을 마쳤습니다. 추가적으로 CodeSniffer
옵션 하나만 활성화 해볼까요?
PHP CodeSniffer 진행률 표시 옵션 활성화
phpcs --config-set show_progress 1
CodeSniffer
실행 시 진행 상황을 파악하기 위한 옵션입니다.
마이그레이션 리포트
phpcs [PATH] --standard=PHPCompatibility
PHPCompatibility
를 사용하기 위해서는 다음과 같이 옵션을 줘야 합니다. 해당 옵션을 주고 실행하면 지정한 PATH에 대하여 문제점을 찾아줍니다. 다만 이 명령어로는 실제 마이그레이션을 작업하기 부적절하므로 몇 가지 추가 옵션을 더 겉들어야 합니다.
마이그레이션 리포트 버전 지정
phpcs [PATH] --standard=PHPCompatibility --runtime-set testVersion 8.0
원하는 버전의 오류를 잡기 위해 PHP 버전을 다음과 같이 명시해야 합니다.
마이그레이션 리포트 범위 지정
phpcs [PATH] --standard=PHPCompatibility --extensions=php,phtml,html --ignore=*\vendor\*
extensions
로 검사할 파일 확장자를 지정하면 불필요한 파일까지 검사하지 않습니다. js나 css파일은 PHP와 무관하므로 검증이 필요한 확장자만 명시하도록 합니다. 이와 함께 Composer
를 통해 생성되는 vendor
디렉토리를 제외합시다. --ingnore는 단순한 예시로 적어두었습니다. 자세한 방식은 문서를 참고하세요.
마이그레이션 리포트 문서 생성
phpcs [PATH] --standard=PHPCompatibility --report=full --report-file=Y:\workspace\report.txt
CodeSniffer
로 어떤 형식의 문서를 받을지 명시할 수 있습니다. 또한 이를 파일로 저장하고자 할 경우 원하는 경로를 지정해주세요.
이 외에도 다양한 옵션이 존재합니다. 필요하다면 CodeSniffer 문서를 참고하세요.
실제로 사용한 마이그레이션 리포트 명령어
phpcs -p [PATH] --standard=PHPCompatibility --runtime-set testVersion 8.0 -w --extensions=php,phtml --report=full --report-file=Y:\workspace\report.txt
? 환경에 따라 소스 코드가 방대할 경우 가용 메모리 부족으로 검사가 중단될 수 있습니다. 만약 메모리가 부족한 환경이라면 디렉토리 별로 나누어서 마이그레이션 검사를 진행하세요.
참고 자료
Devellany
back-end Developer
PHP, Java, JavaScript, MySQL, Redis, Ubuntu, Nginx
Codeigniter, Laravel, Zend, Phalcon, Spring Boot, JPA
PHPStorm, IntelliJ, Upsource, SVN, Git, Telegram Bot