Migre do PHP 5.5 para o tempo de execução do PHP mais recente

Esta página abrange instruções para a migração dos motores de execução PHP de primeira geração para segunda geração. Para atualizar a app de segunda geração para usar a versão mais recente suportada do PHP, consulte o artigo Atualize uma aplicação existente.

O PHP 5 atingiu o fim do suporte a 30 de janeiro de 2024. As suas aplicações PHP 5 existentes vão continuar a ser executadas e a receber tráfego. No entanto, o App Engine pode bloquear a nova implementação de aplicações que usam tempos de execução após a data de fim do suporte. Recomendamos que migre para o tempo de execução suportado mais recente do PHP seguindo as diretrizes nesta página.

A migração para um tempo de execução do PHP de segunda geração suportado permite-lhe usar funcionalidades de linguagem atualizadas e criar apps mais portáteis com código idiomático.

Problemas de compatibilidade entre o PHP 5.5 e os tempos de execução do PHP de segunda geração

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

Principais diferenças entre o PHP 5.5 e os runtimes PHP de segunda geração

Segue-se um resumo das diferenças entre o PHP 5.5 e os tempos de execução do PHP de segunda geração no ambiente padrão do App Engine:

Diferenças na utilização de memória

Os tempos de execução de segunda geração têm uma base de utilização de memória mais elevada em comparação com os tempos de execução de primeira geração. Isto deve-se a vários fatores, como diferentes versões de imagens base e diferenças na forma como as duas gerações calculam a utilização de memória.

Os runtimes de segunda geração calculam a utilização de memória da instância como a soma do que um processo de aplicação usa e o número de ficheiros de aplicação armazenados em cache dinamicamente na memória. Para evitar que as aplicações com utilização intensiva de memória sofram encerramentos de instâncias devido à ultrapassagem dos limites de memória, atualize para uma classe de instância maior com mais memória.

Diferenças na utilização da CPU

Os tempos de execução de segunda geração podem observar uma base mais elevada de utilização da CPU no início a frio da instância. Consoante a configuração de escalabilidade de uma aplicação, isto pode ter efeitos secundários não intencionais, como um número de instâncias superior ao previsto, se uma aplicação estiver configurada para ser dimensionada com base na utilização da CPU. Para evitar este problema, reveja e teste as configurações de escalabilidade da aplicação para garantir que o número de instâncias é aceitável.

Diferenças nos cabeçalhos dos pedidos

Os tempos de execução de primeira geração permitem que os cabeçalhos de pedidos com carateres de sublinhado (por exemplo, X-Test-Foo_bar) sejam encaminhados para a aplicação. Os tempos de execução de segunda geração introduzem o Nginx na arquitetura do anfitrião. Como resultado desta alteração, os tempos de execução de segunda geração estão configurados para remover automaticamente os cabeçalhos com carateres de sublinhado (_). Para evitar problemas com a aplicação, evite usar carateres de sublinhado nos cabeçalhos dos pedidos da aplicação.

Migrar o seu ficheiro app.yaml

Tem de colocar um controlador frontal para processar todo o encaminhamento na sua aplicação. Para mais informações, consulte o artigo Arranque da aplicação.

Os tempos de execução do PHP de segunda geração não permitem a personalização do elemento do controlador script. O único valor válido é auto, porque todo o tráfego é publicado através do comando entrypoint. Todos os controladores de URL não estáticos têm de incluir script: auto para serem implementados com êxito.

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

ElementoAlterar tipoDescrição
entrypointAdicionado Opcionalmente, use este campo para especificar o comando que vai ser executado quando a sua app for iniciada.
threadsafeDescontinuadoPresume-se que todas as aplicações são seguras para threads, o que significa que uma instância pode processar vários pedidos ao mesmo tempo.
api_versionDescontinuadoAnteriormente, era obrigatório, mas não é necessário nos runtimes PHP de segunda geração.
application_readableDescontinuado
builtinsDescontinuado
librariesDescontinuadoÉ possível instalar dependências de terceiros arbitrárias através de um ficheiro de metadados.composer.json
handlersModificado
  • O campo script é opcional e o único valor aceite é auto. Use uma framework Web (como Laravel, Symfony, Slim ou uma opção semelhante) com o encaminhamento na app para executar um script quando um pedido atinge uma rota específica
  • O campo login não é suportado. Use a gestão de identidade e de acesso (IAM) para a gestão de utilizadores.

Se usar algum dos campos descontinuados, ocorre um erro na implementação da app.

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

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

Os runtimes do PHP de segunda geração têm menos restrições em comparação com o runtime do PHP 5.5.

Para mais informações, consulte o ambiente de execução do PHP.

Migre do SDK PHP do App Engine

Para reduzir o esforço e a complexidade da migração em tempo de execução, o ambiente padrão do App Engine permite-lhe aceder a muitos dos serviços e APIs agrupados legados no tempo de execução do PHP de segunda geração, como o Memcache. A sua app PHP de segunda geração pode chamar as APIs de serviços incluídas através do SDK do App Engine e aceder à maioria das mesmas capacidades que no runtime do PHP 5. Nem todos os serviços incluídos antigos disponíveis para o PHP 5 têm um serviço correspondente nos tempos de execução do PHP de segunda geração. Para ver a lista completa das APIs de serviços agrupados antigas disponíveis para os runtimes PHP de segunda geração, consulte a documentação de referências da API de serviços agrupados antigos.

Também tem a opção de usar Google Cloud produtos que oferecem capacidades semelhantes às dos serviços agrupados antigos. Estes Google Cloud produtos fornecem uma biblioteca cliente da CLI do Google Cloud idiomática. Para os serviços incluídos antigos que não estão disponíveis como produtos separados no Google Cloud, como a pesquisa, pode usar fornecedores de terceiros ou outras soluções alternativas. Para saber mais sobre a migração para serviços desagrupados, consulte o artigo Migrar de serviços agrupados.

Executar a aplicação localmente

Para testar a sua aplicação e executá-la localmente:

  1. Instale localmente uma versão do PHP que corresponda a um tempo de execução do PHP de segunda geração disponível no ambiente padrão do App Engine.

  2. Instale um servidor Web e use-o para publicar a sua app localmente.

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

php -S localhost:8080

Em seguida, veja a sua aplicação no navegador de Internet em http://localhost:8080.