이제 PHP 7.4가 일반 안정화 버전으로 제공됩니다.

PHP 5.5에서 PHP 7로 앱 마이그레이션

App Engine 표준 환경에서 PHP 5.5 애플리케이션을 PHP 7 런타임으로 마이그레이션하는 방법을 알아봅니다.

PHP 5.5와 PHP 7 간의 호환성 문제

공식 PHP 문서는 서로 다른 PHP 버전에서의 마이그레이션에 대한 정보를 제공합니다.

app.yaml 파일 마이그레이션

애플리케이션에서 모든 라우팅을 처리하는 프런트 컨트롤러를 배치해야 합니다. 자세한 내용은 애플리케이션 시작을 참조하세요.

PHP 7 런타임에서는 script 핸들러 요소를 맞춤설정할 수 없습니다. 모든 트래픽은 entrypoint 명령어를 통해 제공되므로 유일한 유효 값은 auto입니다. 모든 비정적 URL 핸들러에 script: auto가 포함되어야 성공적으로 배포됩니다.

app.yaml 구성 파일의 일부 요소 동작이 수정되었습니다.

요소유형 변경설명
entrypoint추가됨선택사항. 이 필드를 사용하여 앱 시작 시 실행할 명령어를 지정합니다.
threadsafe지원 중단됨모든 애플리케이션이 스레드 안전으로 간주됩니다. 즉, 인스턴스 한 개가 동시에 여러 요청을 처리할 수 있습니다.
api_version지원 중단됨이전에는 필수 항목이었지만 PHP 7 런타임에서는 필요하지 않습니다.
application_readable지원 중단됨
builtins지원 중단됨
libraries지원 중단됨composer.json 메타데이터 파일을 사용하여 임의의 타사 종속 항목을 설치할 수 있습니다.
handlers수정된 대비율
  • script 필드는 선택사항이며 auto 값만 허용됩니다. 요청이 특정 경로에 도달할 때 스크립트를 실행하려면 인앱 라우팅과 웹 프레임워크(예: Laravel, Symfony, Slim 또는 유사한 옵션)를 사용합니다.
  • login 필드는 지원되지 않습니다. 사용자 관리에 ID 및 액세스 관리(IAM)를 사용합니다.

지원 중단된 필드를 사용하면 앱 배포 시 오류가 발생합니다.

자세한 내용은 app.yaml 참조 문서를 확인하세요.

런타임 제한 감소

PHP 7 런타임은 PHP 5.5 런타임에 비해 제한이 적습니다.

자세한 내용은 PHP 7 런타임 환경 문서를 참조하세요.

App Engine PHP SDK에서 이전

PHP 7 런타임은 App Engine 관련 API를 지원하지 않습니다. 이러한 API에서 제공되는 대부분의 기능은 이제 Cloud SDK 클라이언트 라이브러리에서 제공됩니다.

  • App Engine Blobstore API는 지원되지 않습니다. google/cloud-storage 클라이언트 라이브러리를 통해 Cloud Storage를 사용합니다. 시작하려면 Cloud Storage 클라이언트 라이브러리 페이지를 참조하세요.
  • Datastoregoogle/cloud-datastore 클라이언트 라이브러리를 통해 액세스될 수 있습니다. 시작하려면 Datastore 클라이언트 라이브러리 페이지를 참조하세요.
  • App Engine Images API는 지원되지 않습니다. 이미지를 조작 및 처리할 경우 imgix를 사용하는 것이 좋습니다. 무료 계층이 필요하면 Rethumb를 사용합니다.

    이미지를 저장 및 제공하려면 google/cloud-storage 클라이언트 라이브러리를 통해 Cloud Storage를 사용합니다. 시작하려면 Cloud Storage 클라이언트 라이브러리 페이지를 참조하세요.

  • App Engine Mail API는 지원되지 않습니다. 이메일을 보내려면 SendGrid, Mailgun, Mailjet과 같은 타사 메일 공급업체를 사용하세요. 이러한 모든 서비스는 애플리케이션에서 이메일을 보낼 수 있는 API를 제공합니다.

  • App Engine Memcache는 지원되지 않습니다. 대신 Redis용 Memorystore를 사용합니다.

  • App Engine Modules APIgoogle/apiclient 라이브러리를 통해 액세스될 수 있지만 더 이상 공식 SDK에 포함되지 않습니다. 환경 변수와 App Engine Admin API를 사용하여 정보를 가져오고 애플리케이션의 실행 서비스를 수정합니다.

    서비스 정보 액세스 방법
    현재 서비스 이름 GAE_SERVICE 환경 변수
    현재 서비스 버전 GAE_VERSION 환경 변수
    현재 인스턴스 ID GAE_INSTANCE 환경 변수
    기본 호스트 이름 Admin API apps.get 메서드
    서비스 목록 Admin API apps.services.list 메서드
    서비스 버전 목록 Admin API apps.services.versions.list 메서드
    트래픽 분할을 포함한 서비스 기본 버전 Admin API apps.services.get 메서드
    특정 버전으로 실행 중인 인스턴스 목록 Admin API apps.services.versions.instances.list 메서드
  • App Engine Search API는 지원되지 않습니다. Compute Engine에서의 ElasticSearch와 같은 전체 텍스트 검색 데이터베이스를 호스팅하고 서비스에서 이 데이터베이스에 액세스할 수 있습니다.

  • App Engine Task Queue APICloud Tasks로 대체됩니다. Cloud Tasks REST API, RPC API 또는 PHP 클라이언트 라이브러리를 사용하여 앱의 태스크를 큐에 추가할 수 있으며, 푸시 대상은 PHP 7 런타임의 앱이 될 수 있습니다. push 큐만 지원됩니다.

  • Users API는 지원되지 않습니다.

로컬에서 애플리케이션 실행

dev_appserver.py는 PHP 7 런타임에서 지원되지 않습니다. 애플리케이션을 테스트하고 로컬에서 실행하려면 PHP 7 런타임에서 지원하는 PHP 버전을 설치하고 웹 서버를 설정합니다.

예를 들어 다음 명령어를 실행하여 HTTP 서버를 시작합니다.

php -S localhost:8080

그런 다음 웹브라우저(http://localhost:8080)에서 애플리케이션을 확인합니다.