Questa pagina fornisce istruzioni per eseguire la migrazione dai runtime PHP di prima generazione a quelli di seconda generazione. Per eseguire l'upgrade dell'app di seconda generazione in modo che utilizzi l'ultima versione supportata di PHP, consulta Eseguire l'upgrade di un'applicazione esistente.
Il 30 gennaio 2024 abbiamo raggiunto la fine del supporto di PHP 5. Le applicazioni PHP 5 esistenti continueranno a essere eseguite e a 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 PHP più recente supportato, seguendo le linee guida riportate in questa pagina.
La migrazione a un runtime PHP di seconda generazione supportato ti consente di utilizzare funzionalità del linguaggio aggiornate e di 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 PHP:
- Migrazione da PHP 5.5.x a PHP 5.6.x
- Migrazione da PHP 5.6.x a PHP 7.0.x
- Migrazione da PHP 7.0.x a PHP 7.1.x
- Migrazione da PHP 7.1.x a PHP 7.2.x
- Migrazione da PHP 7.2.x a PHP 7.3.x
- Migrazione da PHP 7.3.x a PHP 7.4.x
- Migrazione da PHP 7.4.x a PHP 8.0.x
- Migrazione da PHP 8.0.x a PHP 8.1.x
Differenze principali tra PHP 5.5 e i runtime PHP di seconda generazione
Di seguito è riportato un riepilogo delle differenze tra i runtime PHP 5.5 e di seconda generazione 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 le diverse versioni delle immagini di base e le 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 della quantità utilizzata da un processo dell'applicazione e del numero di file delle applicazioni memorizzati in modo dinamico nella memoria. Per evitare che le applicazioni che usano molta memoria subiscano arresti delle istanze a causa del superamento dei limiti di memoria, esegui l'upgrade a una classe di istanza più grande con più memoria.
Differenze di utilizzo della CPU
I runtime di seconda generazione possono registrare una base di utilizzo più elevata della CPU con l'avvio a freddo dell'istanza. A seconda della configurazione di scalabilità di un'applicazione, ciò potrebbe avere effetti collaterali imprevisti, ad esempio un conteggio delle istanze maggiore del previsto se un'applicazione è configurata per la scalabilità in base all'utilizzo della CPU. Per evitare questo problema, rivedi e testa le configurazioni di scalabilità delle applicazioni per assicurarti che il numero di istanze sia accettabile.
Differenze nell'intestazione della richiesta
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 in modo da rimuovere automaticamente le intestazioni con trattini bassi (_
). Per evitare problemi con l'applicazione, evita di utilizzare i trattini bassi nelle intestazioni delle richieste dell'applicazione.
Migrazione del file app.yaml
in corso...
Devi inserire un front controller per gestire tutto il routing nell'applicazione. Per maggiori informazioni, vedi Avvio dell'applicazione.
I runtime PHP di seconda generazione non consentono di personalizzare l'elemento del gestore script
. L'unico valore valido è auto
, perché tutto il traffico viene gestito tramite
il comando del punto di ingresso. Per eseguire correttamente il deployment, tutti i gestori di URL non statici devono includere script: auto
.
Il comportamento di alcuni elementi nel file di configurazione app.yaml
è stato
modificato:
Elemento | Tipo di modifica | Descrizione |
---|---|---|
entrypoint | Aggiunta | Facoltativamente, utilizza questo campo per specificare il comando che verrà eseguito all'avvio dell'app. |
threadsafe | Deprecato | Si presume che tutte le applicazioni siano sicure per i thread, il che significa che un'istanza può gestire più richieste contemporaneamente. |
api_version | Deprecato | Obbligatorio in precedenza, ma non necessario nei runtime PHP di seconda generazione. |
application_readable | Deprecato | |
builtins | Deprecato | |
libraries | Deprecato | Le dipendenze arbitrarie di terze parti possono essere installate utilizzando un file di metadati composer.json . |
handlers | Modificata |
|
Se utilizzi uno dei campi deprecati, si verificherà un errore durante il deployment dell'app.
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.
- Installa dipendenze di terze parti.
- Il runtime include un file system completo.
- Creare thread o processi in background che superano l'ambito della richiesta durante l'esecuzione dell'istanza.
- Utilizza la libreria client di Google Cloud per PHP per integrare le app con altri servizi Google Cloud. Per ulteriori informazioni, consulta la pagina Installazione della libreria client di Google Cloud.
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 consente di accedere a molti dei servizi in bundle legacy e di API nel runtime PHP di seconda generazione, come Memcache. L'app PHP di seconda generazione può chiamare le API dei servizi in bundle tramite l'SDK di App Engine e accedere alla maggior parte delle funzionalità del runtime PHP. 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 di riferimento per le API dei servizi in bundle legacy.
Hai anche la possibilità di utilizzare i prodotti Google Cloud che offrono funzionalità simili ai servizi in bundle legacy. Questi prodotti Google Cloud 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, ad esempio la ricerca, puoi utilizzare provider di terze parti o altre soluzioni alternative. Per scoprire di più sulla migrazione ai servizi non in bundle, consulta Migrazione da servizi in bundle.
Esecuzione dell'applicazione in locale
Per testare la tua applicazione ed eseguirla in locale:
Installa localmente una versione di PHP che corrisponde a un runtime PHP di seconda generazione disponibile nell'ambiente standard di App Engine.
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.