PHP 7.3→8.0 | Laavel 5.8→8.0 업그레이드 후의 이야기
개시하다
WEB 어플리케이션에 사용된 PHP7.3의 보안 지원이 2021/12/06로 차단됨
의뢰인에게 버전 업그레이드를 부탁합니다.
그리고 계속 사용하던 라벨 5.8도 일찌감치 보안 지원을 잃었다.
같이 업그레이드하기로 했습니다.
주의
PHP 버전 업그레이드 후 수정 결과가 거의 없기 때문에 주로 라벨 업그레이드에 관한 이야기다.
정면은 베.js로 제작되었기 때문에 서버 측의 대응만 있습니다.
업그레이드 전 환경
버전 업그레이드 후 환경
미리 준비하다
개발 환경 구축
현지의 개발 환경에서 낡은 환경을 파괴하고 싶지 않기 때문에 현지의 다른 곳에서pull창고에서 버전 업그레이드 환경을 구축했다.
새로운 환경은 Laavel Sail을 사용하여 구축하기로 결정했습니다.
분기 구조
몇 차례의 우여곡절을 거쳐 최종적으로 다음과 같은 지점으로 구성되어 진행된다.
지점의 명칭은 일부분으로 약기되어 있다.
분기 이름
소스 만들기(병합 대상)
설명
dev
개발 지점pre-update
dev
Assistant 함수 및 네임스페이스 수정update-laravel
pre-update
( dev
)패키지 업그레이드 및 수정에 따라
update-factory
update-laravel
수정 공장update-passport
update-factory
인증 기능 수정update-test
update-passport
수정 테스트번거롭지만 수정된 지점부터 다시 지점이 생겨 마치 물통 릴레이와 같다.
그 후에 저도 후회했어요.
update-factory
와update-passport
는 반대로 하는 게 좋아요.업그레이드 작업
Assistant 함수 및 네임스페이스 수정
업무 지점:
pre-update
구환경 상태에서 사전에 할 수 있는 수정을 하고 먼저 합병하기로 했다.Laavel 호스트 업그레이드 및 업그레이드 가이드에 따라 수정
업무 지점:
update-laravel
업그레이드 안내서를 읽으면서 버전을 하나하나 올리며 해당하는 부분을 수정했다.이 지점은 주로 다음과 같은 곳에 대응한다.
viewAny()
방법validationData()
방법을 public
serializeDate()
의 재구성failed_jobs
표에 uuid
열을 추가하여 uuid
기존 데이터에 유입.env
의 매개 변수 이름을 일부 변경수정된 매개변수 이름
MAIL_DRIVER
MAIL_MAILER
QUEUE_DRIVER
QUEUE_CONNECTION
수정 팩토리
업무 지점:
update-factory
공장은 새로운 기술 방식이 되었다, 라벨 8.x에서 이전 공장을 사용할 때laravel/legacy-factories
포장에 넣어야 합니다.이번에 이 포장을 넣지 않아서 모든 공장이 수정되었고 공장을 부르는 부분도 수정되었다.
공장의 수정은 착실하게 수공으로 한 것이다.
호출된 부분은 편집기(VScode)의 대체 기능을 이용해 대략적으로 수정한 뒤 수동으로 수정했다.
// 単体
検索 >> factory\((.+)::class\)
置換 >> $1::factory()
// 複数モデル作成
検索 >> factory\((.+)::class, (.+)\)
置換 >> $1::factory()->count($2)
여기는 작업량이 가장 많다.인증 기능 수정
업무 지점:
update-passport
여러 개의 인증 제공자를 사용했기 때문에 구 환경에서 사용했다smartins/passport-multiauth
.그러나 본가
laravel/passport
는 여러 공급자, PHP8에 대응했다.xsmartins/passport-multiauth
는 추천하지 않기 때문에 환승하기로 했습니다.laravel/passport
의 도입은 공식 문서에 따라 이루어졌고 사용passport-multiauth
한 부분을 대응하는 기술로 바꾸면 인증이 가능하기 때문에 환승 자체가 생각보다 쉽다.다만 영향이 가장 큰 부분인 만큼 꼼꼼하게 동작 확인을 했다.
공식 반영 시에도 인증표
migrations
재작성, 서식 재작성 등이 필요하므로 절차를 미리 조사하는 등 긴장을 늦추지 말라는 설명이 뒤따른다.수정 테스트
업무 지점:
update-test
이번phpunit
과 carbon
등의 포장도 업그레이드돼 테스트에 실패한 부분이 있어 수정됐다.수정할 때는 프로그램 자체에 영향이 있는지 확인하면서 진행했다.
phpunit
의 결단에 대한 수정assertRegExp()
등carbon
의 오류 수정으로 인한 테스트 실패에 대한 수정 대응(팀원 조사)일부 API 응답의 상태 코드가 변경되고 세부 사양도 변경되며 일부는 테스트에 주의하지 않은 경우도 있습니다.
그리고 시험을 보면 안도감이 달라져요. 강해요.
발행 시간
위탁자의 일정에 맞추어 발행일을 결정하였다.
발표에 앞서 개발 환경과 무대 환경에서 가능한 한 동작 확인을 진행했다.
그리고 발매 당일 다음과 같은 작업을 진행했다.
failed_jobs
테이블 추가에 대응uuid
최후
잘 나와서 성취감도 있지만 마음이 놓인다는 게 솔직한 소감이다.
역시 시험을 쓰는 것은 좋은 점이 많다.나는 앞으로도 계속 시험을 쓰고 싶다.
어렵게 업그레이드됐기 때문에 PHP 7.4부터 사용하고자 하는 ARROY 함수는 PHP 8.0에
match
식이 적용되는 등 새로운 기능을 계속 사용하고 있다.형식적인 부분을 충실하게 쓰길 바란다.
물론 라벨의 새로운 기능도 추가하고 싶다.
코드 규약도 다시 수정하고 싶어요...나는 하고 싶은 일이 매우 많다.
반성하는 부분이 많은 만큼 앞으로 잘 활용하겠다.
고생이 많았는데 너무 잘 됐다.
향후 개발을 기대하다.
Reference
이 문제에 관하여(PHP 7.3→8.0 | Laavel 5.8→8.0 업그레이드 후의 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/t_arase/articles/7611f032461066텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)