Codeigniter php7 erreurs
J'ai un site sur Codeigniter 2 et lorsque je change de version du serveur de PHP7-je obtenir les deux erreurs suivantes:
Une Erreur PHP a été rencontrée
Gravité: Avis
Message: Seules les variables doivent être attribuées par référence
Nom de fichier: core/Controller.php
Numéro De Ligne: 51
$this->load->_base_classes =& is_loaded();
Une Erreur PHP a été rencontrée
Gravité: 8192
Message: Méthodes avec le même nom que sa classe ne seront pas les constructeurs dans une future version de PHP; CI_DB_driver a un constructeur obsolète
Nom de fichier: database/DB_driver.php
Numéro De Ligne: 31
Personne ne sait comment les corriger?
- seulement supprimer modifier cette ligne pour $this->load->_base_classes =is_loaded(); et ça devrait fonctionner 🙂
Vous devez vous connecter pour publier un commentaire.
Finalement, j'ai juste mis à jour CI cœur de CodeIgniter 2.2.6. Dû changer de pilote de base de données à mysqli (depuis mysql n'est plus pris en charge dans php7) et re-ajout de l'ci_sessions table dans la base de données (aucune idée pourquoi). Et fonctionne comme un charme!
mysql
àmysqli
et sa a fonctionnéCette erreur n'est pas de PHP 7-exclusive, vous obtiendrais dans les anciennes versions. De toute façon, je pense que le problème ici, c'est dans
is_loaded()
et il n'est pas de retourner une référence correctement. Est-il de retour par référence (c'est commefunction &is_loaded()
)? Si non, il en a besoin. Est-il de retour d'une variable ou d'une expression? Si ce n'est pas une variable, il faut la mettre dans un avant, vous pouvez renvoyer une référence.PHP de la page de manuel de cette erreur: http://php.net/manual/en/language.references.return.php
En PHP 4, vous avez fait une méthode de constructeur, en le nommant le même que celui de la classe. Donc, si votre classe a été
class FooBar
, votre constructeurpublic function FooBar
. En PHP 5 et au-delà, cependant, le nom recommandé pour un constructeur est__construct
. Alors, allez et modifier la classe et renommer son constructeur afin de se débarrasser des erreurs de dépréciation. Assurez-vous de regarder n'importe quelle extension de classes pour voir si ils appellent ça la méthode constructeur, trop, de sorte que vous pouvez les modifier.Voir le guide de mise à jour: http://php.net/manual/en/migration70.deprecated.php
Également voir le RFC: https://wiki.php.net/rfc/remove_php4_constructors