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 :

Inclusion de fichiers lors de clics sur des liens


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 61
    Points : 44
    Points
    44
    Par défaut Inclusion de fichiers lors de clics sur des liens
    Bonjour,

    Je suis étudiant en Informatique et débutant dans le langage PHP. J'utilise WAMP ainsi que PhpStorm.

    Je travaille actuellement sur un projet de site Web au sein d'un groupe. Grâce à Git, j'ai récupéré le code que les autres membres de mon groupe ont mis sur GitHub.

    J'arrive à afficher n'importe quelle page du projet sur mon navigateur directement à partir de PhpStorm.

    Cependant, je me suis rendu compte d'un problème lors de l'affichage d'une page du projet à partir du lien d'une autre page du projet. En effet, j'obtiens alors la page voulue, mais avec des Warnings au début qui m'indiquent
    Warning: include(../../config/config.php): failed to open stream: No such file or directory in ...
    ,et :
    Warning: include(): Failed opening '../../config/config.php' for inclusion (include_path='.;C:\php\pear') in ...
    concernant la ligne 1.

    Alors que j'obtiens la même page sans Warning si j'y accède directement depuis mon code avec la redirection de PHPStorm.

    Ci-dessous le lien vers la capture d'écran des détails de ces Warning :

    Nom : Capture2.PNG
Affichages : 358
Taille : 112,6 Ko

    En résumé, j'arrive à accéder à une page de mon projet correctement directement depuis PhpStorm, mais j'obtiens des Warnings en début de page si j'essaye d'y accéder via le lien vers cette page contenu dans une autre page du projet.


    J'ai cherché, mais n'ai malheureusement pas trouvé la solution à mon problème.

    A ce que j'ai compris, ces erreurs sont dues à des erreurs de chemin d'accès vers la page config.php, cependant, cela me semble bizarre, car lorsque je vais sur n'importe quelle page du projet pour la première fois tout se déroule normalement, ce qui veut dire que le chemin d'accès semble être correct la première fois, mais lorsque je clique sur le lien vers une autre page du projet, j'obtiens les Warning cités plus haut.

    J'ai alors pensé au fait que dans le lien vers d'autres pages du projet, j'utilise le URLOOT défini dans la page config.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    action="<?php echo URLROOT; ?>/users/sign_in"
    et que le problème avait un lien avec ça, mais je n'arrive pas à savoir si c'est le cas.

    Pour plus de renseignements, voici les codes de config.php et d'une page quelconque du projet :

    config.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php  
      // db params
      define('DB_HOST', 'localhost');
      define('DB_USER', 'root');
      define('DB_PASS', 'root');
      define('DB_NAME', 'stimulus');
     
      define('APPROOT', dirname(dirname(__FILE__)));
      define('URLROOT', 'http://localhost/isep-stimulus/');
      define('SITENAME', 'Infinite Measures');
    ?>
    et voici la page sign_in.php (page "lambda") :
    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
    <?php include '../../config/config.php';?>
    <?php require APPROOT . '/../public/css/style.php'; ?>
    <style> <?php include APPROOT . '/../public/css/style.css'; ?> </style>
    <style> <?php include APPROOT . '/../public/css/admins/sign_in.css'; ?> </style>
     
     
    <div class="container">
      <h1>Se connecter en tant qu'administrateur </h1>
      <div class="container sign-in-form-container">
        <form action="<?php echo URLROOT; ?>/users/sign_in" method="post">
          <div class="under-container">
            <div>
              <label for="name"><strong>Adresse email *</strong></label>
              <input type="text" name="name" <?php echo (!empty($data['name_error'])) ? 'is-invalid' : ''; ?> value="<?php echo $data['name'] ?>" >
              <span><?php echo $data['name_error']; ?></span>
            </div>
            <div>
              <label for="name"><strong>Mot de passe *</strong></label>
              <input type="password" name="name">
            </div>
          </div>
          <div>
            <input type="submit" class="btn-primary" value="Confirmer">
          </div>
        </form>
      </div>
    </div> 
     
    <?php require APPROOT . '/views/inc/footer.php'; ?>
    Auriez-vous une idée concernant ce problème et comment le résoudre ?

    J'espère avoir été assez clair sur l'énoncé de mon problème, n'hésitez pas à me poser des questions si ce n'est pas la cas,

    En vous remerciant par avance pour votre réponse et votre aide,

    Bien cordialement,

  2. #2
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Salut,
    je pense que les warnings sont clairs.
    Le fichier config.php n'est pas trouvé.

    Est-ce qu'il ne faudrait pas que tu installes PEAR sur ta machine ou le paramétrer ?
    Demande à tes potes s'ils n'utilisent pas des extensions PHP spécifiques.

    Tu as un guide ici https://php.developpez.com/cours/pear/installation/


    Essaie d'utiliser des chemins absolus dans tes include.
    Et puis, préfère des require / require_once plutôt.
    Include ne remonte qu'un warning alors que require (_once) une véritable erreur.

  3. #3
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Qu'est-ce que phpStorm pour toi ?
    En ce qui me concerne, c'est mon IDE.
    J'ai l'impression que tu confonds un truc là.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 61
    Points : 44
    Points
    44
    Par défaut
    Merci beaucoup pour ta réponse,

    Je vais suivre tes instructions et chercher de ce côté là.

    Pour ce qui est de phpStorm, pour moi, c'est mon IDE. Lorsque je dis que j'accède à une page de mon projet directement depuis phpStorm, je fais référence au fait qu'après avoir fini de coder une page, afin de voir le rendu sur le navigateur, je clique directement sur le lien vers le navigateur que j'utilise (en l’occurrence Google Chrome) :

    Nom : CaptureAccesNavigateur.PNG
Affichages : 332
Taille : 14,2 Ko

    Bien cordialement,

    Gabriel Enriquez

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Pour remonter de 2 niveaux dans l'arborescence, au lieu de faire include '../../config/config.php';, je ferais include dirname(dirname('config'.DIRECTORY_SEPARATOR.'config.php'));

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 61
    Points : 44
    Points
    44
    Par défaut
    Merci pour ta réponse,

    J'ai mis la ligne de code que tu m'as indiquée à la première ligne de ma page sign_in.php, mais lorsque je l'affiche j'obtiens cette erreur :

    Warning: include(C:\wamp64\www\isep-stimulus\app\views\users): failed to open stream: Permission denied in C:\wamp64\www\isep-stimulus\app\views\users\sign_in.php on line 1

    Warning: include(): Failed opening '.' for inclusion (include_path='.;C:\php\pear') in C:\wamp64\www\isep-stimulus\app\views\users\sign_in.php on line 1
    Puis, après cela, je ne peux pas accéder aux paramètres de la page config.php tel que APPROOT.

    Cela signifie que j'ai un problème de droits d'accès, je vais essayer de voir comment résoudre cette erreur.

    Auriez-vous une idée concernant la résolution de ce problème ?

    En vous remerciant par avance pour votre réponse,

    Bien cordialement,

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    J'ai regardé mon Wamp que je n'utilise plus (suite à un problème, je suis passé à XAMPP pour développer en local), mais n'ai pas vu de paramètre de configuration qui pourrait jouer...

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Éventuellement, poste une version allégée du code, qui reproduit le problème et que je puisse exécuter (c'est pour ça qu'il faut qu'elle soit allégée), pour voir si j'ai aussi le problème chez moi.

  9. #9
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Dans ton fichier php.ini,
    vérifie Paths and Directories
    Mets un ; sur les lignes include_path=

    Redémarre le serveur

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 61
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    Merci beaucoup pour votre réponse et votre aide, et désolé d'avoir tardé à répondre,

    J'ai été dans le fichier php.ini, dans la partie Path et Directories, mais les include_path se finissent par des ; à chaque fois (en début de ligne suivante, ce que j'ai souligné en rouge) par défaut et le problème est toujours présent malgré la présence de ces ; :

    Nom : Capture3_LI.jpg
Affichages : 331
Taille : 759,6 Ko

    Le projet est constitué d'un dossier app dans lequel se trouve deux dossiers :
    l'un se nomme config et contient le fichier config.php qui est sensé donner les variables globales à tout le reste du projet,
    un autre qui se nomme : views dans lequel se trouve un dossier users et dans lequel se trouve un fichier sign_in.php.
    Pour y voir plus clair :
    app -> config -> config.php, et
    app -> views -> users -> sign_in.php.


    Pour ce qui est de la partie du code allégée du code qui ne marche pas :
    La commande PHP afin d'importer les informations de nommage du fichier config.php vers la fichier sign_in.php ne fonctionne pas :
    Je vous montre les codes allégés de mes pages :
    sign_in.php (ou j'ai enlevé presque tous les éléments afin de la rendre la plus simple possible) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include dirname(dirname('config'.DIRECTORY_SEPARATOR.'config.php'));?>
    , et le code de ma fonction config.php qui me servira afin de définir des variables pour les autres fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php  
      // db params
      define('DB_HOST', 'localhost');
      define('DB_USER', 'root');
      define('DB_PASS', 'root');
      define('DB_NAME', 'stimulus');
     
      define('APPROOT', dirname(dirname(__FILE__)));
      define('URLROOT', 'http://localhost/isep-stimulus/');
      define('SITENAME', 'Infinite Measures');
    ?>
    En ne mettant que ce code, j'obtiens l'erreur suivante :
    Warning: include(C:\wamp64\www\isep-stimulus\app\views\users): failed to open stream: Permission denied in C:\wamp64\www\isep-stimulus\app\views\users\sign_in.php on line 1

    Warning: include(): Failed opening '.' for inclusion (include_path='.;C:\php\pear') in C:\wamp64\www\isep-stimulus\app\views\users\sign_in.php on line 1
    Arrivez-vous à exécuter le code que j'ai posté ?

    J'espère vous avoir aidé à comprendre le problème sur mon projet, et vous demande de bien vouloir m'excuser d'avoir tardé à vous répondre,

    N'hésitez pas à me demander des renseignements si je n'ai pas été assez clair dans mes explications,

    En vous remerciant par avance pour votre réponse,

    Bien cordialement,

  11. #11
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    que donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?= dirname(dirname('config'.DIRECTORY_SEPARATOR.'config.php')) ?>
    ?

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 61
    Points : 44
    Points
    44
    Par défaut
    Cela me donne un point unique en haut à gauche de la page.
    Nom : Capture4.PNG
Affichages : 303
Taille : 15,4 Ko

    Après, lorsque je tente alors de mettre le reste du code de la page sign_in.php, je ne peux pas utiliser les variables de la page config.php comme APPROOT par exemple, et j'obtiens alors un message d'erreur après le point :
    .
    Warning: Use of undefined constant APPROOT - assumed 'APPROOT' (this will throw an Error in a future version of PHP) in C:\wamp64\www\isep-stimulus\app\views\users\sign_in.php on line 3

    Warning: require(APPROOT/../public/css/style.php): failed to open stream: No such file or directory in C:\wamp64\www\isep-stimulus\app\views\users\sign_in.php on line 3

    Fatal error: require(): Failed opening required 'APPROOT/../public/css/style.php' (include_path='.;C:\php\pear') in C:\wamp64\www\isep-stimulus\app\views\users\sign_in.php on line 3.
    Je ne sais pas ce que cela signifie. Auriez-vous une idée ?

    En vous remerciant par avance pour votre réponse,

    Bien cordialement,

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Essaie include dirname(dirname(__DIR__)). DIRECTORY_SEPARATOR .'config' . DIRECTORY_SEPARATOR . 'config.php'; ?>.

    avant de trouver ça, j'ai reproduit le message d'erreur avec XAMPP...

    @m5t3r : <?= dirname(dirname('config'.DIRECTORY_SEPARATOR.'config.php')) ?>, ça ne donne que .

  14. #14
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 61
    Points : 44
    Points
    44
    Par défaut
    Bonsoir,

    Merci beaucoup pour ta réponse, j'ai enlevé tous les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include '../../config/config.php';?>
    de mes autres pages de code, et n'ai mis que ce que tu m'as indiqué au début de ma page sign_in.php et ainsi, j'arrive à accéder à toutes les pages du projet correctement depuis sign_in.php.

    Ainsi, mon problème est résolu,

    Merci beaucoup pour ton aide.

    Bien cordialement,

  15. #15
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    C'est très cool d'avoir pu aider , sachant que dans 99,9% des cas, c'est l'inverse (n'est-ce pas jreaux62, rawsrc et bien d'autres ?). C'est d'ailleurs en surveillant les réponses, que j'ai remarqué cette discussion...
    PHPSTORM, c'est aussi devenu mon IDE (on était déjà confinés) ; il est génial.

    FrankensteinSc (alias laurentSc)

    Petite explication : __DIR__ est une constante magique de PHP qui retourne le répertoire courant. Le double appel de dirname fait remonter à 2 dossiers parent successifs (depuis PHP7, on peut aussi écrire dirname(__DIR__,2)). Après, y a plus qu'à redescendre vers config.php.

  16. #16
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 61
    Points : 44
    Points
    44
    Par défaut
    D'accord,

    Merci beaucoup pour ta réponse et tes explications sur la constante _DIR_ et la fonction dirname(), que je ne connaissais pas du tout.

    Encore une fois merci pour ton aide,

    Bonne continuation,

    Bien cordialement,

  17. #17
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Merci.
    Attention, on écrit __DIR__ (2 underscores de chaque côté), pas _DIR_.

  18. #18
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 61
    Points : 44
    Points
    44
    Par défaut
    Ah d'accord, pardon,

    Merci de m'avoir corrigé,

    Bien cordialement,

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

Discussions similaires

  1. Compteurs de clics sur des liens
    Par F@bien.fd dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 22
    Dernier message: 19/11/2014, 23h31
  2. Réponses: 1
    Dernier message: 05/05/2009, 08h36
  3. Réponses: 3
    Dernier message: 06/12/2007, 07h42
  4. Explorer plante lors d'action sur des fichiers
    Par shloka dans le forum Windows Vista
    Réponses: 4
    Dernier message: 16/10/2007, 09h10
  5. JSP : Récupérer valeur lors du clic sur un bouton
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 12
    Dernier message: 11/04/2006, 11h16

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