Diferenças entre o PHP 5.5 e o PHP 7/8

O PHP 5 chegou ao fim do suporte em 30 de janeiro de 2024. Os aplicativos PHP 5 atuais continuarão a ser executados e a receber tráfego. No entanto, o App Engine pode bloquear a reimplantação de aplicativos que usam ambientes de execução após o término da data de suporte. Recomendamos que você migre para a versão compatível mais recente do PHP seguindo as diretrizes nesta página.

Nesta página, explicamos como migrar seu aplicativo PHP 5.5 para o ambiente de execução do PHP 7/8 no ambiente padrão do App Engine.

Problemas de compatibilidade entre o PHP 5.5 e o PHP 7/8

A documentação oficial do PHP contém informações sobre a migração de diferentes versões do PHP:

Diferenças principais entre o PHP 5.5 e o PHP 7/8

Veja a seguir um resumo das diferenças entre os ambientes de execução do PHP 5.5 e do PHP 7/8 no ambiente padrão do App Engine:

Diferenças de uso da memória

Os ambientes de execução de segunda geração têm um valor de referência maior do uso de memória em comparação com os da primeira geração. Isso ocorre devido a vários fatores, como versões diferentes da imagem de base e diferenças na forma como as duas gerações calculam o uso de memória.

Os ambientes de execução de segunda geração calculam o uso de memória da instância como a soma do que um processo do aplicativo usa e o número de arquivos de aplicativos armazenados em cache dinamicamente na memória. Para evitar que aplicativos com uso intensivo de memória tenham encerramentos de instâncias por excederem os limites de memória, faça upgrade para uma classe de instância maior com mais memória.

Diferenças de uso da CPU

Os ambientes de execução de segunda geração podem ter um valor de referência mais alto de uso da CPU durante a inicialização a frio da instância. Dependendo da configuração de escalonamento de um aplicativo, isso pode ter efeitos colaterais não intencionais, como uma contagem de instâncias maior do que o previsto se um aplicativo estiver configurado para escalonar com base na utilização da CPU. Para evitar esse problema, revise e teste as configurações de escalonamento do aplicativo para garantir que o número de instâncias seja aceitável.

Diferenças de cabeçalhos de solicitação

Os ambientes de execução de primeira geração permitem que os cabeçalhos das solicitações com sublinhados (por exemplo, X-Test-Foo_bar) sejam encaminhados para o aplicativo. Os ambientes de execução de segunda geração introduzem o Nginx na arquitetura do host. Como resultado dessa mudança, os ambientes de execução de segunda geração são configurados para remover automaticamente cabeçalhos com sublinhados (_). Para evitar problemas no aplicativo, evite usar sublinhados nos cabeçalhos das solicitações.

Como migrar seu arquivo app.yaml

Coloque um controlador frontal para processar todo o roteamento em seu aplicativo. Para mais informações, consulte Inicialização do aplicativo.

Os ambientes de execução do PHP 7/8 não permitem que o elemento do gerenciador script seja personalizado. O único valor válido é auto, porque todo o tráfego é exibido pelo comando entrypoint. Todos os gerenciadores de URL não estáticos precisam incluir script: auto para serem implantados.

O comportamento de alguns elementos no arquivo de configuração app.yaml foi modificado:

ElementoTipo de alteraçãoDescrição
entrypointIncluídoOpcionalmente, use esse campo para especificar o comando que será executado quando o aplicativo for iniciado.
threadsafeObsoletoTodos os aplicativos são presumidos como thread-safe, o que significa que uma instância pode manipular várias solicitações ao mesmo tempo.
api_versionSuspensoNão mais necessário no ambiente de execução do PHP 7/8.
application_readableSuspenso
builtinsObsoleto
librariesObsoletoDependências arbitrárias de terceiros podem ser instaladas usando um arquivo de metadados composer.json.
handlersModificado

Se você usar qualquer um dos campos obsoletos, haverá um erro na implantação do aplicativo.

Para mais informações, consulte a referência app.yaml.

Restrições de ambiente de execução reduzidas

Os ambientes de execução do PHP 7/8 têm menos restrições em comparação com o ambiente de execução do PHP 5.5.

Para mais informações, consulte a documentação do ambiente de execução do PHP 7/8.

Como migrar do SDK PHP do App Engine

Para reduzir o esforço e a complexidade da migração do ambiente de execução, o ambiente padrão do App Engine permite acessar muitos serviços incluídos legados e APIs no ambiente de execução do PHP 7/8 , como o Memcache. Seu aplicativo PHP 7/8 pode chamar as APIs de serviços incluídos no SDK do App Engine para PHP 7/8 e acessar a maioria das mesmas funcionalidades que o ambiente de execução do PHP 5. Nem todos os serviços incluídos legados disponíveis para PHP 5 têm um serviço correspondente no PHP 7/8. Para ver a lista completa das APIs dos serviços incluídos legados disponíveis para PHP 7/8, consulte a documentação de referência da API de serviços incluídos legados.

Você também tem a opção de usar produtos do Google Cloud que oferecem funcionalidades semelhantes aos serviços incluídos legados. Esses produtos do Google Cloud fornecem a biblioteca de cliente CLI do Google Cloud. Para os serviços incluídos no pacote que não estão disponíveis como produtos separados no Google Cloud, como pesquisa, é possível usar provedores de terceiros ou outras soluções alternativas. Para saber mais sobre como migrar para serviços desagrupados, consulte Como migrar de serviços incluídos.

Executar o aplicativo localmente

Para testar o aplicativo e executá-lo localmente:

  1. Instale localmente uma versão do PHP que corresponda a um dos ambientes de execução do PHP 7/8 disponíveis no ambiente padrão do App Engine.
  2. Instale um servidor da Web e use-o para disponibilizar seu app localmente.

Por exemplo, inicie o servidor HTTP executando o seguinte comando:

php -S localhost:8080

Em seguida, visualize o aplicativo no navegador da Web em http://localhost:8080.