Partage
  • Partager sur Facebook
  • Partager sur Twitter

IDE: Trouver le path d'un fichier depuis un autre

Galère parfois avec les dossiers et fichiers en ..//./...

    29 juillet 2024 à 18:46:32

    Hello,

    alors c'est un problème tout simple qui m'a pris un temps fou à résoudre aujourd'hui...

    j'ai eu ce problème:

    require_once(ici le chemin vers la connexion à la base de données);   ==> le chemin a finalement suivi un chemin que je n'ai pas compris...

    Avez-vous une astuce pour ne plus perdre son temps?

    Et pourquoi parfois les dossiers / et fichiers . ne fonctionnent pas??

    PS: j'ai testé le ctrl+shift+h sur vscode et ça pas été concluant...

    merci par avance

    • Partager sur Facebook
    • Partager sur Twitter

    Se renouveler c'est monter en compétences

      30 juillet 2024 à 17:28:39

      tout dépend du point de départ, point de départ qui dépend de la position du fichier, du dossier de travail en cours, de l'emplacement où le programme est exécuté, .... (tout dépend du contexte)

      le ".." permet de remonter d'un niveau

      le "." fait référence au dossier en cours

      le "/" sert en général à éviter de doubler le "\" pour l'échapper (sous windows) et ça dépend aussi des langages

      sous Linux "/" est le dossier racine 

      Une "astuce" c'est d'indiquer un chemin absolu, mais si on déplace les fichiers, il faut réactualiser ces chemins; ou de travailler avec un chemin de base à partir duquel tous les autres chemins seront définis (base+"..\cobase\fichier.tx", base+"\sous-dossier\fichier2.txt" par exemple) 

      le ctrl+shift+h permet de faire un "chercher/remplacer dans les fichiers", je ne vois pas ce que ça vient faire ici.

      Ta question est très vague et manque de contexte: on devine seulement que c'est du PHP parce que tu évoques "require_once"

      Si tu veux une explication sur le cheminent effectué dans ton cas, il nous faudra plus de détail, à commencer par ce chemin et le positionnement de ton fichier (au minimum)

      • Partager sur Facebook
      • Partager sur Twitter
        14 août 2024 à 18:27:49

        merci pour votre retour bien instructif!

        > oui c'est bien du PHP (désolée pour cet oubli basique...)

        > j'ai juste créé un site "horoscope" où seul l'admin a accès au CRUD (les membres ne peuvent que consulter)

        >  vu que j'ai créé l'accueil à la racine ... et séparé tout le reste :

        • en POO j'ai testé l'autoloading : ça n'a pas fonctionné... car le chemin n'est pas le même


        ==> effectivement j'ai résolu le problème en intégrant tout le code dans le même dossier pour que les chemins restent similaires (autoloading réussi)

        Du coup je n'ai plus de fichier racine, mais le tout fonctionne !

        * et pour le "ctrl+shift+h" j'avais trouvé cette astuce pour trouver un fichier, et ce n'était pas spécifié "remplacer" : alors  merci aussi pour ce détail !

        • Partager sur Facebook
        • Partager sur Twitter

        Se renouveler c'est monter en compétences

          17 août 2024 à 21:03:40

          > Et pourquoi parfois les dossiers / et fichiers . ne fonctionnent pas??

          Un dossier, ça ne "fonctionne" pas.  Ca contient des fichiers et d'autres dossiers.

          > Avez-vous une astuce pour ne plus perdre son temps?

          Oui. Prendre le temps de bien étudier ce qu'on utilise, et faisant des essais pour voir si on a bien compris.

          test/
          |-- lib
          |   |-- bar.php
          |   `-- foo.php
          `-- m1.php
          

          Un premier point : un include, ou un require, ça peut avoir comme point de départ le dossier qui contient le source qui est exécuté.

          Exemple : je suis dans test (*) et je lance la commande pour exécuter m1.php

              php test/m1.php

          et comme dans m1.php il y a

          <?php
          require("lib/foo.php");
          bar();
          
          

          ça va faire l'inclusion de test/lib/foo.php, parce que le fichier m1.php est dans test.

          Et dans le fichier foo.php il y a

          <?php
          require("bar.php");

          qui va inclure test/lib/bar.php,  puisque foo.php est dans test/lib

          Dans bar.php, il y a une définition de fonction

          <?php
          function bar() {
              echo ("fonction bar appelée\n");
          }

          et donc, c'est cette fonction qui est exécutée quand j'exécute le script

          $ php test/m1.php 
          fonction bar appelée
          

          Second point : on peut aussi jouer avec l'include_path, une chaine de caractères qui indique dans quels dossiers il faut aller chercher les fichiers qu'on veut inclure.

          Exemple, dans test, à coté de m1.php, on ajoute un fichier m2.php qui contient

          <?php
          set_include_path("lib");
          require("foo.php");
          bar();
          
          

          comme lib figure dans l'include_path, de m2.php qui est dans test, php ira regarder dans test/lib si il y a un fichier foo.php



          (*) non c'est faux, en fait moi je suis dans ma chaise devant le clavier (**). En vrai, je veux dire que le répertoire courant (du shell qui s'exécute dans la fenêtre où je tape mes commandes) c'est le dossier/répertoire test.

          ?php
          require("bar.php");


          (**) c'est faux aussi. Au moment où vous lisez, il y a des chances que je sois ailleurs.

          -
          Edité par michelbillaud 19 août 2024 à 6:25:26

          • Partager sur Facebook
          • Partager sur Twitter
            21 août 2024 à 12:58:53

            Merci michelbillaud pour votre aide

            > c'est vrai qu'un dossier 'ne fonctionne' pas... je pense que j'avais placé une variable 'chemin' importante stockée dans le gitignore de mon cerveau :D . Comme je parlais de chemin au début, je pensais naturel que je parlais aussi du moyen (chemin gitignoré) d'accéder au dossier/fichier. Parfois les chemins pour arriver aux slashes ou doubles slashes (destination convoitée) me returnent une error.

            => merci pour le conseil : je vais effectivement me poser pour bien étudier les chemins à l'avenir, mais surtout, désormais, je prévois d'avance la structure de mes projets!

            -
            Edité par codelys 2 octobre 2024 à 10:56:38

            • Partager sur Facebook
            • Partager sur Twitter

            Se renouveler c'est monter en compétences

            IDE: Trouver le path d'un fichier depuis un autre

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown