Découvrez comment migrer votre application PHP 5.5 vers l'environnement d'exécution PHP 7 dans l'environnement standard App Engine.
Problèmes de compatibilité entre PHP 5.5 et PHP 7
La documentation officielle de PHP fournit des informations sur les migrations à partir de différentes versions de PHP :
- Migration de PHP 5.5.x vers PHP 5.6.x
- Migration de PHP 5.6.x vers PHP 7.0.x
- Migration de PHP 7.0.x vers PHP 7.1.x
- Migration de PHP 7.1.x vers PHP 7.2.x
- Migration de PHP 7.2.x vers PHP 7.3.x
- Migration de PHP 7.3.x vers PHP 7.4.x
Migrer votre fichier app.yaml
Vous devez placer un contrôleur frontal pour gérer tout le routage de votre application. Pour en savoir plus, consultez la section Démarrage de l'application.
L'environnement d'exécution PHP 7 ne permet pas de personnaliser l'élément de gestionnaire script
. La seule valeur valide est auto
, car l'intégralité du trafic est diffusée à l'aide de la commande "entrypoint". Tous les gestionnaires d'URL non statiques doivent inclure script: auto
pour se déployer correctement.
Le comportement de certains éléments du fichier de configuration app.yaml
a été modifié :
Élément | Type de modification | Description |
---|---|---|
entrypoint | Ajouts | Facultatif. Utilisez ce champ pour spécifier la commande à exécuter au démarrage de votre application. |
threadsafe | Obsolète | Toutes les applications sont supposées être "threadsafe", ce qui signifie qu'une instance peut gérer plusieurs requêtes en même temps. |
api_version | Obsolète | Auparavant obligatoire, mais non requis dans l'environnement d'exécution PHP 7. |
application_readable | Obsolète | |
builtins | Obsolète | |
libraries | Obsolète | Les dépendances tierces arbitraires peuvent être installées à l'aide d'un fichier de métadonnées composer.json . |
handlers | Modifié |
|
Si vous utilisez l'un des champs obsolètes, une erreur se produira lors du déploiement de l'application.
Pour en savoir plus, consultez la documentation de référence sur app.yaml
.
Restrictions d'environnement d'exécution réduites
L'environnement d'exécution PHP 7 présente moins de restrictions que l'environnement d'exécution PHP 5.5.
- Vous pouvez installer des dépendances tierces.
- L'environnement d'exécution comprend un système de fichiers complet.
- Vous pouvez créer des processus ou des threads en arrière-plan qui existent au-delà du champ d'application de la requête pendant l'exécution de l'instance.
- Utilisez la bibliothèque cliente Google Cloud pour PHP afin d'intégrer des applications à d'autres services Google Cloud. Pour en savoir plus, consultez la page Installer la bibliothèque cliente Google Cloud.
Pour en savoir plus, consultez la documentation relative à l'environnement d'exécution PHP 7.
Effectuer une migration à partir du SDK PHP App Engine
L'environnement d'exécution PHP 7 n'est pas compatible avec les API spécifiques à App Engine. La plupart des fonctionnalités fournies par ces API sont désormais fournies par la bibliothèque cliente du SDK Cloud :
- La compatibilité avec l'API Blobstore d'App Engine n'est pas fournie. Utilisez Cloud Storage via la bibliothèque cliente
google/cloud-storage
. Pour commencer, consultez la page Bibliothèques clientes Cloud Storage. - Datastore est accessible via la bibliothèque cliente google/cloud-datastore. Pour commencer, consultez la page Bibliothèques clientes Datastore.
La compatibilité avec l'API Images d'App Engine n'est pas fournie. Pour manipuler et traiter les images, nous recommandons d'utiliser imgix. Si vous avez besoin d'une version gratuite, utilisez Rethumb.
Pour stocker et diffuser vos images, utilisez Cloud Storage via la bibliothèque cliente
google/cloud-storage
. Pour commencer, consultez la page Bibliothèques clientes Cloud Storage.La compatibilité avec l'API Mail d'App Engine n'est pas fournie. Pour envoyer un e-mail, utilisez un fournisseur de messagerie tiers tel que SendGrid, Mailgun ou Mailjet. Tous ces services proposent des API permettant d'envoyer des e-mails à partir d'applications.
La compatibilité avec Memcache d'App Engine n'est pas fournie. Utilisez plutôt Memorystore pour Redis.
L'API Modules d'App Engine est accessible à l'aide de la bibliothèque
google/apiclient
, mais n'est plus incluse dans un SDK officiel. Utilisez les variables d'environnement et l'API Admin d'App Engine afin d'obtenir des informations sur les services en cours d'exécution pour l'application et modifier ces services :Informations sur les services Moyen d'accès Nom actuel du service Variable d'environnement GAE_SERVICE
Version actuelle du service Variable d'environnement GAE_VERSION
ID actuel de l'instance Variable d'environnement GAE_INSTANCE
Nom d'hôte par défaut Méthode apps.get
de l'API AdminListe des services Méthode apps.services.list
de l'API AdminListe des versions d'un service Méthode apps.services.versions.list
de l'API AdminVersion par défaut d'un service, y compris les répartitions du trafic Méthode apps.services.get
de l'API AdminListe des instances en cours d'exécution d'une version Méthode apps.services.versions.instances.list
de l'API AdminLa compatibilité avec l'API App Engine Search n'est pas assurée. Vous pouvez héberger les bases de données de recherche en texte intégral du type ElasticSearch dans Compute Engine et y accéder à partir de votre service.
L'API Task Queue d'App Engine est remplacée par Cloud Tasks. Vous pouvez mettre en file d'attente des tâches depuis votre application à l'aide de l'API REST Cloud Tasks, de l'API RPC ou de la bibliothèque cliente PHP. Votre cible push peut être une application dans l'environnement d'exécution PHP 7. Seules les files d'attente d'envoi sont disponibles.
La compatibilité avec l'API Users n'est pas fournie.
Exécuter votre application en local
dev_appserver.py
n'est pas compatible avec l'environnement d'exécution PHP 7. Pour tester votre application et l'exécuter localement, installez une version de PHP compatible avec l'environnement d'exécution PHP 7 et configurez un serveur Web.
Par exemple, démarrez le serveur HTTP en exécutant la commande suivante :
php -S localhost:8080
Affichez ensuite votre application dans le navigateur Web à l'adresse http://localhost:8080.