Esegui la migrazione da PHP 5.5 all'ultimo runtime PHP

Questa pagina illustra le istruzioni per la migrazione dai runtime PHP di prima generazione a quelli di seconda generazione. Per eseguire l'upgrade dell'app di seconda generazione in modo da utilizzare la versione più recente di PHP supportata, consulta Eseguire l'upgrade di un'applicazione esistente.

Il 30 gennaio 2024 è terminato il supporto di PHP 5. Le applicazioni PHP 5 esistenti continueranno a funzionare e a ricevere traffico. Tuttavia, App Engine potrebbe bloccare il nuovo deployment delle applicazioni che utilizzano i runtime dopo la data di fine del supporto. Ti consigliamo di eseguire la migrazione al runtime PHP più recente supportato utilizzando le linee guida riportate in questa pagina.

La migrazione a un runtime PHP di seconda generazione supportato ti consente di utilizzare funzionalità di linguaggio aggiornate e creare app più portabili 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 nell'utilizzo della memoria

I runtime di seconda generazione hanno una base di riferimento dell'utilizzo della memoria più elevata rispetto ai runtime di prima generazione. Ciò è dovuto a diversi fattori, come versioni diverse delle immagini 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 la somma di ciò che viene utilizzato da un processo dell'applicazione e del numero di file dell'applicazione memorizzati nella cache dinamicamente in memoria. Per evitare che le applicazioni che utilizzano molta memoria vengano chiuse 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 mostrare una linea di base più elevata dell'utilizzo della CPU al primo avvio dell'istanza. A seconda della configurazione della scalabilità di un'applicazione, questo potrebbe avere effetti collaterali indesiderati, ad esempio un numero di istanze superiore a quello previsto se un'applicazione è configurata per la scalabilità in base all'utilizzo della CPU. Per evitare questo problema, esamina 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 di richiesta con trattini bassi (ad es. X-Test-Foo_bar). I runtime di seconda generazione introducono Nginx nell'architettura host. A seguito di questa variazione, i runtime di seconda generazione sono configurati per rimuovere automaticamente le intestazioni con trattini bassi (_). Per evitare problemi con le applicazioni, evita di utilizzare tracci bassi nelle intestazioni delle richieste delle applicazioni.

Migrazione del file app.yaml

Devi inserire un controller frontale per gestire tutto il routing nella tua applicazione. Per ulteriori informazioni, consulta la sezione Avvio dell'applicazione.

I runtime PHP di seconda generazione non consentono di personalizzare l'elemento di gestore script. L'unico valore valido è auto, perché tutto il traffico viene pubblicato utilizzando il comando entrypoint. Per eseguire il deployment correttamente, tutti i gestori degli URL non statici devono includere script: auto.

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

ElementoTipo di modificaDescrizione
entrypointAggiunta Facoltativamente, utilizza questo campo per specificare il comando che verrà eseguito all'avvio dell'app.
threadsafeRitiratoSi presume che tutte le applicazioni siano a prova di thread, il che significa che un'istanza può gestire più richieste contemporaneamente.
api_versionRitiratoIn precedenza obbligatoria, ma non necessaria nei runtime PHP di seconda generazione.
application_readableRitirato
builtinsRitirato
librariesRitiratoÈ 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 (ad esempio Laravel, Symfony, Slim o un'opzione simile) con il routing in-app per eseguire un script quando una richiesta raggiunge un percorso specifico
  • Il campo login non è supportato. Utilizza Identity and Access Management (IAM) per la gestione degli utenti.

Se utilizzi uno dei campi ritirati, verrà visualizzato un errore durante il deployment dell'app.

Per ulteriori informazioni, consulta la sezione di riferimento app.yaml.

Restrizioni di runtime ridotte

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 API e servizi in bundle legacy nel runtime PHP di seconda generazione, come Memcache. L'app PHP di seconda generazione può chiamare le API dei servizi in bundle tramite SDK App Engine e accedere alla maggior parte delle stesse funzionalità del 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 alle API dei servizi in bundle legacy.

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

Eseguire l'applicazione in locale

Per testare l'applicazione ed eseguirla localmente:

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

  2. Installa un server web e utilizzalo per pubblicare l'app localmente.

Ad esempio, avvia il server HTTP eseguendo il seguente comando:

php -S localhost:8080

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