IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Passer de php 7.4 à php 8


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut Passer de php 7.4 à php 8
    Bonjour à tous,

    Mon hébergeur me conseille de passer mes sites à PHP 8. J'ai fait un premier test et grosso modo tout passe bien. Je détecte cependant parfois quelques erreurs.
    Le problème, c'est qu'en cas d'erreur, le site affiche carrément une page vide. Par exemple, php8 semble très sensible à de petites lacunes, comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($_GET["action"]==envoi)
    Il manque tout simplement les guillemets autour de "envoi". Un tel manque ne suscite aucune erreur en 7.4, mais avec la version 8, la page plante.

    Ma question est : comment identifier les erreurs possibles avec php8 ? Existe-t-il un outil pour analyser le code et indiquer ce qui ne va pas ? Ou dois-je engager un expert pour revoir les fichiers ?

    Merci d'avance pour vos réponses !

  2. #2
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Un outil merveilleux oui : Rector https://github.com/rectorphp/rector

    Il va te permettre de faire l'upgrade de ton code et, utilisé régulièrement, de tes compétences puisqu'il va t'apprendre à mieux coder.

  3. #3
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Un outil merveilleux oui : Rector
    Merci, ça a l'air très intéressant, mais alors je n'ai absolument pas compris comment l'utiliser.
    Quant à la version en ligne, elle ne décèle pas mon problème de guillemets.

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 341
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 341
    Billets dans le blog
    17
    Par défaut
    Par exemple, php8 semble très sensible à de petites lacunes
    J'aime comme tu minimises la situation
    PHP était bien (trop) gentil d'interpréter ta constante inexistante comme un littéral, mois je t'aurais balancé direct une 500.

    Un tel manque ne suscite aucune erreur en 7.4
    Si, ce type d'erreur génère une notif comme "Notice: Use of undefined constant".
    Tes réglages devaient la cacher.

    Perso je corrigerais toutes les erreurs à la mano (on apprend mieux).

    Et je passerais la rapport d'erreur au plus strict => error_reporting(E_ALL);

    Dans un terminal, pour identifier tous les scripts comportant une égalité suivie d'un caractère (comme dans ton exemple) :

    $ grep -rs '==[a-z]' /path/to/root/*

  5. #5
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Rector ne détecte pas les erreurs (il existe des dizaines d'outils pour ça comme phpstan ou encore psalm (ou d'autres)).

    Rector permet de migrer ton code depuis une version de php vers une autre. Donc php 7.x verz 8.x entre autre.

  6. #6
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 493
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Et je passerais le rapport d'erreur au plus strict => error_reporting(E_ALL);
    C'est ce que je ferais aussi.
    Et si c'est possible, exécuter les sites en local pour que les utilisateurs ne voient pas les erreurs.

  7. #7
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Bonjour

    Voici un article récent sur Rector https://tighten.com/insights/automat...ith-rector-php

    Il y est fait mention de la configuration à utiliser pour migrer ton code vers PHP 8.1 (chapitre Levelling Up)

  8. #8
    Membre éclairé
    Avatar de Freedolphin
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2006
    Messages : 291
    Par défaut
    Citation Envoyé par Séb. Voir le message
    mois je t'aurais balancé direct une 500.
    Rhoooo quel monde cruel ! Rassure-toi, php8 n'est pas avare d'erreur 500.

    Citation Envoyé par Séb. Voir le message
    Perso je corrigerais toutes les erreurs à la mano (on apprend mieux).
    Et je passerais la rapport d'erreur au plus strict => error_reporting(E_ALL);
    Je vais en effet m'y atteler à la main (Rector n'est pas pour moi, mes compétences s'arrêtent là) et scruter les erreurs avec error_reporting.

    Citation Envoyé par Séb. Voir le message
    Dans un terminal, pour identifier tous les scripts comportant une égalité suivie d'un caractère (comme dans ton exemple) :
    $ grep -rs '==[a-z]' /path/to/root/*
    Bon, là, je sèche, trop complexe. Petite question (bête), est-ce que les variables sont autorisées sans guillemets, du genre if ($i == $page) ?

  9. #9
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Citation Envoyé par Freedolphin Voir le message
    Bon, là, je sèche, trop complexe. Petite question (bête), est-ce que les variables sont autorisées sans guillemets, du genre if ($i == $page) ?
    Oui, certainement !

    Note $i === $page (avec trois égals) permet de valider et la valeur et le type (integer). Si p.ex. $i serait un chiffre et $page une chaîne de caractères alors le test sera en échec. C'est ce qu'on nomme le "strict type" en PHP et les tests devraient idéalement toujours se faire ainsi.

Discussions similaires

  1. Passer de PHP à ASP en 3 jours ?!
    Par webja dans le forum Débuter
    Réponses: 3
    Dernier message: 28/05/2008, 17h08
  2. passer paramètre à php en ligne de commande
    Par beyo dans le forum Langage
    Réponses: 2
    Dernier message: 11/04/2008, 00h08
  3. Réponses: 11
    Dernier message: 23/11/2007, 10h31
  4. Passer de PHP a Word ou PDF
    Par guillaumeIOB dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 06/09/2006, 11h26
  5. Réponses: 2
    Dernier message: 06/01/2005, 21h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo