Migrazione da PHP 5.5 al runtime PHP più recente

Questa pagina contiene le istruzioni per eseguire la migrazione dal da prima a seconda generazione i runtime PHP. Per eseguire l'upgrade dell'app di seconda generazione in modo che utilizzi l'app più recente supportata di PHP, consulta l'articolo Eseguire l'upgrade di un'applicazione esistente.

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

La migrazione a un runtime PHP di seconda generazione supportato ti consente usano funzioni linguistiche aggiornate e creano 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 PHP:

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

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

Differenze di utilizzo della memoria

I runtime di seconda generazione registrano una base di utilizzo della memoria più elevata rispetto ai runtime di prima generazione. Ciò è dovuto a più fattori, come diversi versioni delle immagini di base e le differenze nel modo in cui le due generazioni calcolano la memoria all'utilizzo delle risorse.

I runtime di seconda generazione calcolano l'utilizzo della memoria dell'istanza come la somma di quanto un degli utilizzi da parte del processo dell'applicazione e il numero di file delle applicazioni memorizzati in modo dinamico nella cache in memoria. Per evitare che le applicazioni che usano molta memoria utilizzino l'istanza arresti anomali dovuti al superamento dei limiti di memoria, esegui l'upgrade a una versione classe dell'istanza con più memoria.

Differenze di utilizzo della CPU

I runtime di seconda generazione possono vedere una base di utilizzo più alta della CPU al momento dell'istanza avvio a freddo. A seconda della configurazione di scalabilità di un'applicazione, effetti collaterali imprevisti, come un conteggio delle istanze più elevato del previsto è configurata per la scalabilità in base all'utilizzo della CPU. Per evitare che questo accada esaminare e testare le configurazioni di scalabilità delle applicazioni per garantire di istanze sono accettabili.

Differenze nell'intestazione della richiesta

I runtime di prima generazione consentono intestazioni delle richieste con trattini bassi (ad es. X-Test-Foo_bar) da inoltrare alla domanda. Di seconda generazione introduce Nginx nell'architettura host. Per effetto di ciò, modifica, i runtime di seconda generazione sono configurati per rimuovere automaticamente 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 in corso...

Devi inserire un controller anteriore per gestire tutto il routing nell'applicazione. Per ulteriori informazioni, vedi Avvio dell'applicazione.

I runtime PHP di seconda generazione non consentono l'utilizzo dell'elemento gestore script personalizzati. L'unico valore valido è auto, perché tutto il traffico viene gestito con il comando del punto di ingresso. Tutti i gestori di URL non statici devono includere script: auto per eseguire il deployment correttamente.

Il comportamento di alcuni elementi del 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.
threadsafeRitiratoTutti si presuppone che le applicazioni siano threadsafe, ovvero che un'istanza possa più richieste contemporaneamente.
api_versionRitiratoIn precedenza obbligatorio ma non necessario nei runtime PHP di seconda generazione.
application_readableRitirato
builtinsRitirato
librariesRitiratoTerzo arbitrario puoi installare dipendenze di terze parti utilizzando un composer.json dei metadati.
handlersModificato
  • La Il campo script è facoltativo e l'unico valore accettato è auto. Utilizza un framework web (ad es. Laravel, Symfony, Slim o simile ) con routing in-app per eseguire una script quando una richiesta raggiunge una route specifica
  • login non è supportato. Utilizza le funzionalità di Identity and Access Management (IAM) per la gestione degli utenti.

Se utilizzi uno dei campi ritirati, si verificherà un errore nell'app e deployment continuo.

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

Limitazioni di runtime ridotte

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

Per maggiori informazioni, consulta la sezione sull'ambiente di runtime PHP.

Esegui la migrazione dall'SDK PHP di App Engine

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

Hai anche la possibilità di utilizzare i prodotti Google Cloud che offrono con funzionalità simili a quelle dei servizi in bundle legacy. Questi progetti Google Cloud offrono una libreria client di Google Cloud CLI idiomatica. Per i servizi in bundle precedenti che non sono disponibili come prodotti separati in Google Cloud, come la ricerca, puoi utilizzare provider di terze parti soluzioni alternative. Per scoprire di più sulla migrazione ai servizi non in bundle, vedi Migrazione da servizi in bundle.

Esecuzione dell'applicazione in locale

Per testare la tua applicazione ed eseguirla in locale:

  1. Installa localmente una versione di PHP che corrisponde a un runtime PHP di seconda generazione disponibili 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

Dopodiché, visualizza la tua applicazione nel browser web all'indirizzo http://localhost:8080.