Differenze tra PHP 5.5 e PHP 7/8

Il supporto di PHP 5 è terminato il 30 gennaio 2024. Le applicazioni PHP 5 esistenti continueranno a essere eseguite e a ricevere traffico. Tuttavia, App Engine potrebbe bloccare il nuovo deployment di applicazioni che utilizzano runtime dopo la data di fine dell'assistenza. Ti consigliamo di eseguire la migrazione all'ultima versione supportata di PHP seguendo le linee guida riportate in questa pagina.

Questa pagina illustra come eseguire la migrazione dell'app PHP 5.5 al runtime PHP 7/8 nell'ambiente standard di App Engine.

Problemi di compatibilità tra PHP 5.5 e PHP 7/8

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

Differenze fondamentali tra PHP 5.5 e PHP 7/8

Di seguito è riportato un riepilogo delle differenze tra i runtime PHP 5.5 e PHP 7/8 nell'ambiente standard App Engine:

Differenze di utilizzo della memoria

Per i runtime di seconda generazione, la base di utilizzo della memoria è maggiore rispetto ai runtime di prima generazione. Ciò è dovuto a più fattori, ad esempio diverse versioni delle immagini di base e alle 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 viene usato da un processo di applicazione e del numero di file dell'applicazione memorizzati nella cache in modo dinamico. Per evitare che le applicazioni che consumano 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 notare una base di utilizzo della CPU più elevata in caso di avvio a freddo delle istanze. A seconda della configurazione di scalabilità di un'applicazione, questo potrebbe avere effetti collaterali involontari, ad esempio un numero di istanze più elevato del 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à delle applicazioni per assicurarti che il numero di istanze sia accettabile.

Differenze nell'intestazione 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 in modo da rimuovere automaticamente le intestazioni con trattini bassi (_). Per evitare problemi dell'applicazione, evita di utilizzare i trattini bassi nelle intestazioni delle richieste dell'applicazione.

Migrazione del file app.yaml in corso...

Devi posizionare un front controller per gestire tutti i percorsi nell'applicazione. Per maggiori informazioni, consulta Avvio dell'applicazione.

I runtime PHP 7/8 non consentono la personalizzazione dell'elemento gestore script. L'unico valore valido è auto, perché tutto il traffico viene gestito utilizzando il comando del punto di ingresso. Tutti i gestori di URL non statici devono includere script: auto per eseguire correttamente il deployment.

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

ElementoTipo di modificaDescrizione
entrypointAggiunto Facoltativamente, utilizza questo campo per specificare il comando che verrà eseguito all'avvio dell'app.
threadsafeDeprecataSi presume che tutte le applicazioni siano threadsafe, il che significa che un'istanza può gestire più richieste contemporaneamente.
api_versionDeprecataPrecedentemente obbligatoria, ma non necessaria nei runtime PHP 7/8.
application_readableDeprecata
builtinsDeprecata
librariesDeprecataLe dipendenze di terze parti arbitrarie possono essere installate 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 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 la documentazione di riferimento di app.yaml.

Limitazioni di runtime ridotte

I runtime PHP 7/8 hanno meno restrizioni rispetto al runtime PHP 5.5.

Per ulteriori informazioni, consulta la documentazione relativa all'ambiente di runtime PHP 7/8.

Migrazione dall'SDK PHP di App Engine

Per ridurre l'impegno e la complessità nella migrazione del runtime, l'ambiente standard di App Engine consente di accedere a molti servizi e API legacy in bundle nel runtime PHP 7/8, ad esempio Memcache. L'app PHP 7/8 può chiamare le API dei servizi in bundle tramite l'SDK App Engine per PHP 7/8 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 in PHP 7/8. Per l'elenco completo delle API dei servizi in bundle legacy disponibili per PHP 7/8, consulta la documentazione di riferimento delle API dei servizi in bundle legacy.

Hai anche la possibilità di utilizzare prodotti Google Cloud che offrono funzionalità simili a quelle dei 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 a servizi non in bundle, consulta Migrazione dai servizi in bundle.

Esecuzione dell'applicazione in locale

Per testare la tua applicazione ed eseguirla localmente:

  1. Installa localmente una versione di PHP corrispondente a uno dei runtime PHP 7/8 disponibili nell'ambiente standard di App Engine.
  2. Installa un server web e utilizzalo per gestire la tua app localmente.

Ad esempio, avvia il server HTTP eseguendo questo comando:

php -S localhost:8080

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