Esegui la migrazione da PHP 5.5 all'ultimo runtime PHP

Questa pagina contiene le istruzioni per la migrazione dai runtime PHP di prima alla seconda generazione. Per eseguire l'upgrade dell'app di seconda generazione in modo che utilizzi l'ultima versione supportata di PHP, vedi Eseguire l'upgrade di un'applicazione esistente.

PHP 5 è deprecato. Non potrai eseguire il deployment di applicazioni PHP 5, anche se la tua organizzazione in precedenza utilizzava una policy dell'organizzazione per riattivare i deployment di runtime legacy. Le tue applicazioni PHP 5 esistenti continueranno a essere eseguite e a ricevere traffico. Ti consigliamo di eseguire la migrazione all'ultima versione supportata di PHP.

La migrazione a un runtime PHP di seconda generazione supportato ti consente di utilizzare funzionalità del linguaggio aggiornate e creare app più portatili, con codice idiomatico.

Problemi di compatibilità tra PHP 5.5 e i runtime PHP di seconda generazione

La documentazione ufficiale di PHP fornisce informazioni sulla migrazione da diverse versioni di PHP:

Differenze principali tra PHP 5.5 e i runtime PHP di seconda generazione

Di seguito è riportato un riepilogo delle differenze tra PHP 5.5 e i runtime PHP di seconda generazione nell'ambiente standard di App Engine:

Differenze di utilizzo della memoria

I runtime di seconda generazione hanno una base di utilizzo della memoria più elevata rispetto ai runtime di prima generazione. Ciò è dovuto a diversi fattori, ad esempio versioni diverse dell'immagine di base e differenze nel modo in cui le due generazioni calcolano l'utilizzo della memoria.

I runtime di seconda generazione calcolano l'utilizzo della memoria dell'istanza come somma di ciò che utilizza un processo dell'applicazione e del numero di file dell'applicazione memorizzati dinamicamente nella cache in memoria. Per evitare che le applicazioni che utilizzano molta memoria subiscano arresti anomali delle istanze a causa del superamento dei limiti di memoria, esegui l'upgrade a una classe di istanze più grande con più memoria.

Differenze nell'utilizzo della CPU

I runtime di seconda generazione possono registrare una baseline più elevata di utilizzo della CPU all'avvio a freddo dell'istanza. A seconda della configurazione di scalabilità di un'applicazione, ciò potrebbe avere effetti collaterali indesiderati, ad esempio un numero di istanze superiore al previsto se un'applicazione è configurata per scalare in base all'utilizzo della CPU. Per evitare questo problema, rivedi e testa le configurazioni di scalabilità dell'applicazione per assicurarti che il numero di istanze sia accettabile.

Differenze nelle intestazioni delle richieste

I runtime di prima generazione consentono di inoltrare all'applicazione le intestazioni delle richieste con trattini bassi (ad es. X-Test-Foo_bar). I runtime di seconda generazione introducono Nginx nell'architettura host. A seguito di questa modifica, i runtime di seconda generazione sono configurati per rimuovere automaticamente le intestazioni con trattini bassi (_). Per evitare problemi con l'applicazione, evita di utilizzare trattini bassi nelle intestazioni delle richieste dell'applicazione.

Migrazione del file app.yaml

Devi inserire un controller frontale per gestire tutto il routing nella tua applicazione. Per saperne di più, consulta Avvio dell'applicazione.

I runtime PHP di seconda generazione non consentono la personalizzazione dell'elemento del gestore script. L'unico valore valido è auto, perché tutto il traffico viene pubblicato utilizzando il comando del punto di ingresso. Tutti i gestori di URL non statici devono includere script: auto per essere implementati correttamente.

Il comportamento di alcuni elementi nel file di configurazione app.yaml è stato modificato:

ElementoTipo di modificaDescrizione
entrypointAggiunta (Facoltativo) utilizza questo campo per specificare il comando che verrà eseguito all'avvio dell'app.
threadsafeDeprecatoTutte le applicazioni sono considerate thread-safe, il che significa che un'istanza può gestire più richieste contemporaneamente.
api_versionDeprecatoIn precedenza obbligatorio, ma non necessario nei runtime PHP di seconda generazione.
application_readableDeprecato
builtinsDeprecato
librariesDeprecatoÈ possibile installare dipendenze di terze parti arbitrarie utilizzando un file di metadati composer.json.
handlersModificato
  • Il campo script è facoltativo e l'unico valore accettato è auto. Utilizza un framework web (come Laravel, Symfony, Slim o un'opzione simile) con il routing in-app per eseguire uno script quando una richiesta raggiunge una route specifica.
  • Il campo login non è supportato. Utilizza Identity and Access Management (IAM) per la gestione degli utenti.

Se utilizzi uno dei campi deprecati, si verificherà un errore durante il deployment dell'app.

Per saperne di più, consulta il riferimento app.yaml.

Limitazioni ridotte del runtime

I runtime PHP di seconda generazione hanno meno limitazioni rispetto al runtime PHP 5.5.

Per ulteriori informazioni, consulta l'ambiente di runtime PHP.

Eseguire la migrazione dall'SDK PHP di App Engine

Per ridurre lo sforzo e la complessità della migrazione del runtime, l'ambiente standard App Engine ti consente di accedere a molti servizi e API legacy inclusi nel runtime PHP di seconda generazione, come Memcache. La tua app PHP di seconda generazione può chiamare le API dei servizi in bundle tramite l'SDK App Engine e accedere alla maggior parte delle stesse funzionalità disponibili nell'ambiente di runtime PHP 5. Non tutti i servizi in bundle legacy disponibili per PHP 5 hanno un servizio corrispondente nei runtime PHP di seconda generazione. Per l'elenco completo delle API dei servizi in bundle legacy disponibili per i runtime PHP di seconda generazione, consulta la documentazione dei riferimenti delle API dei servizi in bundle legacy.

Hai anche la possibilità di utilizzare Google Cloud prodotti che offrono funzionalità simili a quelle dei servizi in bundle legacy. Questi Google Cloud prodotti forniscono una libreria client di Google Cloud CLI idiomatica. Per i servizi in bundle legacy che non sono disponibili come prodotti separati in Google Cloud, come la ricerca, puoi utilizzare fornitori di terze parti o altre soluzioni alternative. Per saperne di più sulla migrazione ai servizi separati, consulta la pagina Eseguire la migrazione dai servizi in bundle.

Esecuzione dell'applicazione in locale

Per testare l'applicazione ed eseguirla localmente:

  1. Installa localmente una versione di PHP che corrisponde a un runtime PHP di seconda generazione disponibile nell'ambiente standard di App Engine.

  2. Installa un server web e utilizzalo per pubblicare la tua app localmente.

Ad esempio, avvia il server HTTP eseguendo questo comando:

php -S localhost:8080

Poi, visualizza l'applicazione nel browser web all'indirizzo http://localhost:8080.