PHP 7.4 est maintenant accessible à tous.

Effectuer une migration de votre application de PHP 5.5 vers PHP 7

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 :

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émentType de modificationDescription
entrypointAjoutsFacultatif. Utilisez ce champ pour spécifier la commande à exécuter au démarrage de votre application.
threadsafeObsolèteToutes les applications sont supposées être "threadsafe", ce qui signifie qu'une instance peut gérer plusieurs requêtes en même temps.
api_versionObsolèteAuparavant obligatoire, mais non requis dans l'environnement d'exécution PHP 7.
application_readableObsolète
builtinsObsolète
librariesObsolèteLes dépendances tierces arbitraires peuvent être installées à l'aide d'un fichier de métadonnées composer.json.
handlersModifié
  • Le champ script est facultatif et la seule valeur acceptée est auto. Utilisez un framework Web (tel que Laravel, Symfony, Slim ou une option semblable) avec un routage intégré pour exécuter un script lorsqu'une requête survient sur une route spécifique.
  • Le champ login n'est pas disponible. Utilisez Identity and Access Management (IAM) pour la gestion des utilisateurs.

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.

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 Admin
    Liste des services Méthode apps.services.list de l'API Admin
    Liste des versions d'un service Méthode apps.services.versions.list de l'API Admin
    Version par défaut d'un service, y compris les répartitions du trafic Méthode apps.services.get de l'API Admin
    Liste des instances en cours d'exécution d'une version Méthode apps.services.versions.instances.list de l'API Admin
  • La 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.