Maison  >  Article  >  développement back-end  >  Problèmes de compatibilité rencontrés lors de la migration d'ECshop vers la version PHP7

Problèmes de compatibilité rencontrés lors de la migration d'ECshop vers la version PHP7

不言
不言original
2018-06-07 11:23:462623parcourir

Récemment, un internaute m'a interrogé sur une erreur lors de l'installation d'ecshopv2.7.3 sur PHP7. Après un long moment, je n'ai pas trouvé la raison. Ici, l'éditeur de Script House va analyser les raisons de ce problème

.

Sur PHP7 Lors de l'installation d'ECShop V2.7.3, un message d'erreur apparaît !

Obsolète : les méthodes portant le même nom que leur classe ne seront pas des constructeurs dans une future version de PHP ; ECS a un constructeur obsolète dans /usr/local/nginx/html/ecshop/upload/includes/cls_ecshop. php en ligne 25

La raison de cette erreur est que PHP7 ne prend plus en charge la méthode de construction du même nom que la classe. La méthode de construction utilise uniformément __construct(), comme la méthode d'écriture suivante PHP7 Cette erreur sera signalée.

<?php 
class foo { 
function foo() {
echo &#39;I am the constructor&#39;;
}
}
?>

De retour à ecshop, jetons un œil à la ligne 25 du fichier cls_ecshop.php. Comme suit


Effectivement, il existe une méthode constructeur avec le même nom que la classe Nous avons changé la méthode constructeur ECS en __construct,


Retournez à la page d'accueil d'installation d'ecshop et actualisez-la, et constatez qu'il n'y a plus d'erreurs.


Cliquez sur Suivant et signalez une erreur

Obsolète : la méthode non statique cls_image::gd_version() ne doit pas être appelée de manière statique dans /usr /local/nginx/html/ecshop/upload/install/includes/lib_installer.php en ligne 31

La raison de cette erreur est l'appel statique de méthodes non statiques, comme le suivant Le code signalera cette erreur

<?php 
class foo { 
function bar() {
echo &#39;I am not static!&#39;;
}
}
foo::bar(); 
?>

Il est également très simple de modifier la méthode, soit de changer la méthode en méthode statique, ou modifiez l'appel en un appel de méthode non statique. Jetons un coup d'œil aux 31 lignes de code du fichier lib_installer.php qui ont signalé l'erreur


et à la méthode gd version() de la classe d'image cls file. On voit qu'il n'est effectivement pas utilisé mot-clé statique


La première méthode de modification consiste à modifier la méthode en méthode statique et à ajouter le mot-clé public. static


La deuxième méthode de modification consiste à utiliser des appels non statiques et à modifier les 31 lignes de code dans lib_installer.php

Ces deux méthodes All peuvent résoudre le problème. En revenant à la deuxième page des étapes d'installation d'ecshop, le message d'erreur a disparu.


La prochaine tragédie est que PHP7 ne prend pas en charge l'API MySQL d'origine. PHP7 prend en charge une meilleure API Mysqli et l'API pdo_mysql, donc ecshop ne change pas le fonctionnement de MySQL. L'API ne peut pas fonctionner sur PHP7.


OneAPM pour PHP peut approfondir toutes les applications PHP pour compléter la gestion des performances des applications. Il peut approfondir toutes les applications PHP pour compléter la gestion et la surveillance des performances des applications. y compris les performances au niveau du code, l'identification et le traçage rapides des goulots d'étranglement des performances, la surveillance de l'expérience utilisateur réelle, la surveillance des serveurs et la gestion de bout en bout des performances des applications.

Ce qui précède a partagé avec vous les problèmes de compatibilité rencontrés lors de la migration d'ECshop vers la version PHP7. J'espère que cela sera utile à tout le monde.

Recommandations associées :

Solution au dossier temporaire introuvable dans le téléchargement PHP


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn