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 :

autoload de classes sous linux


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    r83
    r83 est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 271
    Par défaut autoload de classes sous linux
    Bonjour,

    J'ai développé une application sous windows faisant appel à des classes avec namespaces, ...
    J'ai mis en place un mécanisme d'autochargement des classes avec spl_autoload. Tout marchait bien.
    Quand j'ai déployé sur un serveur linux, il ne trouve plus mes classes.
    J'ai fait un test sur une petite page, en enlevant les namespaces,.... mais rien n'y fait.
    Voici le code simplifié qui ne fonctionne pas (j'ai volontairement mis tout le code dans le même fichier index.php :

    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
    27
    28
    29
    30
    31
    32
    33
    <?php
    define('RACINE', __DIR__);
    spl_autoload_extensions('.php');
    set_include_path(
            '/home/xxx/public_html/cciV1/Config/'
            //RACINE . DIRECTORY_SEPARATOR .  'Config' . PATH_SEPARATOR
    );
    echo get_include_path() . '<br>';
    if (spl_autoload_register()) {
        echo 'ok';
    } else {
        echo 'KO';
    }
    ?>
     
    <html>
        <head>
            <meta charset="UTF-8">
            <title>Exercice CCI</title>
        </head>
        <body>
    <?php
    echo '<br>Bienvenue <br>';
    try {
        //include '/home/xxx/public_html/cciV1/Config/Utilitaire.php';
        echo Utilitaire::getMessage();
        echo "super";
    } catch (Exception $ex) {
        echo $ex->getMessage() . "  - code :  " .$ex->getCode();
    }
    ?>
        </body>
    </html>
    Ma classe Utilitaire est dans le dossier Config sous index.php.
    La classe ne se charge que lorsque je fais un include comme celui avant l'appel à la fonction getMessage().
    Les deux possibilités censées fournir le même résultat dans le set_include_path ne travaillent pas, et la fonction spl_autoload_register renvoie vrai.
    J'ai vérifié la casse, ...

    Merci pour vos retours.
    Cordialement

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Le include ne te renvoit pas une erreur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre chevronné
    Avatar de kalimukti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 262
    Par défaut
    Bonjour,
    Le chemin des classes qui se perdent sous linux ? Perso je regarderais direct la casse de tes noms de fichiers (exemple: le nom de tes classes en majuscule et les noms de fichiers en minuscule: si tu passes d'un Mac insensible à la casse ou d'un PC, où cette différence ne créer pas de problème, à Linux, qui est sensible à la casse, spl_autoload ne trouve plus tes classes).

  4. #4
    r83
    r83 est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 271
    Par défaut
    bonjour,

    Mon include ne plante pas..... c'est là mon problème. Je pense que le pb vient de l'autoload.
    J'ai vérifié les casses, il me semble qu'il n'y a pas de souci avec.
    Merci si vous pensez à autre chose

Discussions similaires

  1. Linker un jar à une class sous linux
    Par scheme dans le forum Build
    Réponses: 0
    Dernier message: 24/12/2010, 10h46
  2. comment compiler une classe sous linux qui implemente une interface
    Par nina08 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 19/11/2008, 08h43
  3. Réponses: 2
    Dernier message: 06/10/2008, 13h20
  4. Comment désinstaller MySQL sous linux
    Par nahmsath dans le forum Installation
    Réponses: 5
    Dernier message: 18/09/2007, 10h46
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

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