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 :

site ne fonctionne pas sous php 7 après migration windows->linux


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    en reconversion
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : en reconversion
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 28
    Points
    28
    Par défaut site ne fonctionne pas sous php 7 après migration windows->linux
    Bonjour à tous

    voilà mon problème.

    j'ai voulu migré un petit projet de site commercial sportif, développé à l'origine sous windows avec php 5.6 et wampserver vers un vieux pc 32 bits linuxmint utilisant xampp et php 7(pas la dernière version, because pc trop vieux ) histoire de voir si ça fonctionne sous un environnement différent.
    Le problème est que ça ne fonctionne pas du tout.
    Mon code est développé selon le modèle MVC.Mes fichiers sont stockés dans les dossiers, Controleur, modele (qui possède un dossier entités contenant les classes métiers), et le dossier vue.
    Le tout est lancé via un index qui charge un autoloader de classes.

    En principe dès que je lance le site je dois tombé sur la page d'accueil. A la place j'ai une erreur du type:

    Fatal error: Uncaught Error: Class 'CategorieProduit' not found in /opt/lampp/htdocs/www/monsite/Modele/ManagerActivite.class.php:51 Stack trace: #0 /opt/lampp/htdocs/www/monsite/Controleur/ControleurAccueil.class.php(38): ManagerActivite->getListeActivesSportives() #1 /opt/lampp/htdocs/www/monsite/Controleur/Routeur.class.php(496): ControleurAccueil->listeActivites() #2 /opt/lampp/htdocs/www/monsite/index.php(30): Routeur->routerRequete() #3 {main} thrown in /opt/lampp/htdocs/www/monsite/Modele/ManagerActivite.class.php on line 51
    Visiblement une classe n'est pas trouvée (ici CategorieProduit). Je veux donc savoir s'il pourrait s'agir d'un problème de chemin de fichier ou d'un problème de nom de fichier ou de nom de classe ou bien d'une option non activée dans php ou xampp. c'est étrange car tout fonctionnait bien sous windows , alors je me suis dit que sous linux ça ne devrait pas poser de problème. Je m'aperçois que non.

    voici le code de mon index et de mon autoloader car je pense que le problème vient de là. Mais comme je ne connais pas encore bien linux et xampp j'ai du mal à voir d'où ça peut venir.

    code index

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    <?php
    include('Controleur/Autoloader.class.php');					
    Autoloader::register();
     
    //si l'identifiant de session est vide on démarre la session
    $id = session_id();
    if(empty ($id))
    	{	
    		session_start();
    	}
     
    //on initialise une variable de session vide
    if(!isset($_SESSION['personne']))
    {
    	$_SESSION['personne'] = NULL;
    }
     
    //Création d'un objet de type Routeur avec appel de la méthode de routage routerRequete()
    $routeur = new Routeur();
     
    $routeur->routerRequete();
    code autoloader

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?php
    Class Autoloader
    {
    	/**
    	* Méthode static register() : appelle la méthode spl_autoload_register()
    	*
    	*/
    	public static function register()
    	{
     
    	private static function autoload($nomClasse)
    	{
    	    $dossiers = array('Controleur/', 'Modele/', 'Modele/entites/', 'Vue/');
     
    		foreach($dossiers as $dossier)
    		{
    			if(file_exists($dossier . $nomClasse . '.class.php'))
    			{
    				require_once($dossier . $nomClasse . '.class.php');
    			}
    			else
    			{echo "le fichier " .$dossier . $nomClasse . ".class.php n'existe pas <br />";}	
    		}
    	}
    }
    Merci pour votre aide

  2. #2
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Points : 2 006
    Points
    2 006
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Tu n'utilises pas de namespaces pour déclarer et charger tes classes ?

  3. #3
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Le problème le plus fréquent c'est le problème de casse dans le nom des fichiers et dossiers (majuscules / minuscules).

    Linux est sensible à la casse alors que Windows non.
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    en reconversion
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : en reconversion
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 28
    Points
    28
    Par défaut
    bonsoir ,
    merci pour vos réponses.
    pour répondre à Sodium non je n'utilise pas les namespaces. je ne les ai pas jugé utiles pour mon cas. De plus j'ai voulu faire un truc simple histoire de voir si j'étais capable de sortir quelque chose en adoptant le MVC. les namespaces , ce sera pour plus tard.

    Je vais essayé de voir mes noms de fichiers pour commencer.

  5. #5
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Points : 2 006
    Points
    2 006
    Billets dans le blog
    1
    Par défaut
    Si tu te lances dans la conception d'un framework je te conseille vivement de commencer par te former aux namespaces, d'autant plus qu'une fois le processus d'autoload mis en place cela ne nécessite aucun travail supplémentaire niveau développement

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    en reconversion
    Inscrit en
    Avril 2018
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : en reconversion
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2018
    Messages : 50
    Points : 28
    Points
    28
    Par défaut
    Bonjour
    désolé pour cette réponse tardive, mais je prends note de ton conseil, Sodium. Je connais un peu les namespaces, j'ai déjà vu quelque tutos sur le sujet.

    Pour en revenir à mon problème, j 'ai enfin réussi à faire tourner mon projet sous Linux,après moultes essais.
    Dans un premier temps, j'avais renommé tous mes fichiers en minuscules. tout ça, pour me rendre compte que ça m'obligeait à modifier aussi les scripts de mes fichiers. Bref de toutes façons ça ne fonctionnait pas. J'ai ensuite renommé mes tables dans mes requêtes SQL car elles n'étaient pas reconnues. Du coup je n'avais plus d'erreurs SQL, super !!. Mais ça ne fonctionnait toujours pas.
    j'ai donc décidé de renommer tous mes dossiers en minuscules. Et là miracle ! ça a fonctionné.

    Est ce que ça veut dire que linux n'accepte pas les noms de dossiers commençant par une majuscule, ou est ce parce que mes fichiers ont d'abord été nommés sous Windows et qu'il y a eu incompatibilité entre les deux systèmes ? étrange !

  7. #7
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Non ça veut simplement dire que sous Windows /toto et /Toto désigne le même dossier, alors que sous linux ce sont deux dossiers différents. Voilà ce que signifie sensible à la casse.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

Discussions similaires

  1. php 5.5.15 ne fonctionne pas sous UwAmp
    Par xianmai dans le forum Apache
    Réponses: 2
    Dernier message: 19/08/2015, 17h18
  2. [AJAX] Tutoriel ajax du site ne fonctionne pas sous IE 9
    Par Super_carotte dans le forum AJAX
    Réponses: 2
    Dernier message: 20/01/2015, 10h34
  3. pg_restore.exe ne fonctionne pas sous Windows en PHP
    Par didiblo dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 03/06/2013, 17h47
  4. Réponses: 5
    Dernier message: 17/12/2008, 14h18
  5. Réponses: 18
    Dernier message: 19/08/2004, 15h11

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