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 :

Passage par référence cause une fatal error


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut Passage par référence cause une fatal error
    Bonjour,

    Nous avons le logiciel PMB (version 3.4.16) sur un serveur qui est en PHP 5.3.17. Je dois migrer PMB en version 4.1.

    J'ai récupéré les bases de données et le code de l'application sur ma machine pour tester la migration qui ne semble pas une mince affaire (passage par la version 3.5, entre autres) mais j'ai, comme kephag en 2012, une page blanche lorsque j'essaie de lancer le logiciel.

    Mes investigations me conduisent sur un problème de passage par référence qui a été retiré de PHP, ma machine étant en PHP 5.4.35.

    Voici l'erreur :
    Fatal error: Call-time pass-by-reference has been removed in /var/www/html/pmbcdi/classes/XMLlist.class.php on line 128
    Et effectivement, dans le code, il y a un passage par référence (&$this ci-dessous):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xml_set_object($this->analyseur, &$this);
    Que me conseillez-vous ?
    1) Changer la version PHP sur ma machine pour la rendre compatible avec cette vieille version de PMB
    Comment faire ? Un tuto quelque part ?

    2) Modifier le code partout où il y a des passages par référence qui m'empêchent de faire fonctionner la base du logiciel.
    Comment faire ? Un exemple avec le bout de code ci-dessus serait bienvenu avec les explications adéquates.
    Il risque d'y en avoir un paquet et il y a un paquet énorme de programmes.

    3) Faire un clone du serveur (c'est un serveur virtuel) et tester la migration sur le clone.
    Si l'admin système veut bien et si c'est possible (espace disque entre autres).
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Par défaut
    Salut,

    Pour ce point précis c'est très simple ^^.

    Ça veut juste dire que désormais tu n'as pas besoin de préciser que le passage se fait par référence lors de l'appel de la fonction.

    Il faut donc enlever le & de this :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xml_set_object($this->analyseur, $this);

  3. #3
    Membre chevronné
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Septembre 2012
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2012
    Messages : 416
    Par défaut
    Bonjour,
    +1 pour Lilalex.

    Le passage d'un objet en paramètre d'une fonction/méthode se fait implicitement par référence.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Merci.

    J'ai effectivement pu afficher la page d'accueil en supprimant simplement les & dans quelques programmes.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 31/01/2012, 23h11
  2. Réponses: 1
    Dernier message: 29/08/2011, 17h31
  3. Réponses: 4
    Dernier message: 26/12/2009, 20h48
  4. Passage par référence d'une référence
    Par Clercq dans le forum Débuter
    Réponses: 4
    Dernier message: 17/04/2009, 18h11
  5. Réponses: 4
    Dernier message: 26/12/2005, 17h01

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