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 :

Où est faite l'inclusion ? / Déboguer du PHP


Sujet :

Langage PHP

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut Où est faite l'inclusion ? / Déboguer du PHP
    Bonjour,

    j'ai un fichier qui est inclus plusieurs fois dans mon code et j'aimerais savoir, quand il est appelé, d'où vient l'inclusion.

    Exemple de ce que je voudrais :

    toto.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    include 'fichier.php';


    titi.php :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    include 'fichier.php';

    Dans cet exemple le fichier fichier.php est inclus dans toto.php et dans titi.php. Est-il possible, dans fichier.php, de mettre un code qui dit si l'inclusion est faite dans toto ou dans titi ?

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    include n'étant pas paramétrable c'est pas faisable nativement.
    D'ailleurs je me pose la question de l'utilité dans un site en production... Pour le débogage, je veux bien, il est intéressant de voir la pile d'appels avec par exemple la fonction debug_print_backtrace() mais au-delà de cette utilisation si ça reste nécessaire c'est qu'il y a un problème d'architecture.

    Le seule moyen c'est de faire des inclusions distantes paramétrables à base de include 'http://www.site.com/script_a_inclure.php?caller=nom_script_appelant mais pour des raisons de sécurité je te le déconseillerais fortement.

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Tu me le déconseilles mais en phase de mise au point à condition de supprimer tout ça avant mise en production ?

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    Hello Laurent,

    Je parie que ton vrai problème est un problème d'organisation.

    Qu'est-ce qui t'empêche de définir une constante dans les fichiers appelants, et de vérifier l'existence de cette constante dans le fichier inclus?

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Euh, une constante par fichier pourquoi pas mais alors bonjour l'usine à gaz. T'imagine un fichier inclus de partout la tartine de tests pour savoir qui l'appelle et pourquoi ça plante... C'est une très mauvaise idée.

    Tu dois revoir ton architecture et/ou ton organisation. Il y a bien un autre moyen beaucoup plus simple c'est d'utiliser une débogueur avec points d'arrêt et exécution pas à pas, à chaque arrêt tu auras ainsi la pile d'appels, les valeurs des variables et des paramètres. C'est autrement plus simple à déboguer ainsi que toutes les rustines que l'on pourra te filer.

    Prends le temps d'installer Xdebug et tu devrais t'en sortir bien mieux.

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Super car ça fait 9 ans que je code du PHP et je ne connaissais pas de débogueur...Cela dit, je connais bien le principe car il y a près de 20 ans, je faisais du logiciel embarqué et j'utilisais un émulateur (notamment pour poser des points d'arrêt et analyser la trace précédant le point d'arrêt). C'est sûr qu'une telle fonctionnalité me serait très utile. J'ai donc installé xdebug puis la dll de Notepad++ (j'ai l'habitude avec cet éditeur), qui doit permettre de poser des points d'arrêt. Mais
    Dans Notepad++, allez dans le menu Compléments > DBGp > Debugger, ce qui va afficher l'interface.
    Le menu "Compléments" ne possède pas chez moi de sous-menu "DBGp" (juste HTML tag qui rappelle le nom de la dll, mais rien trouvé d'utile dessous). Et pas moyen de poser un point d'arrêt. Donc comment faire ?

  7. #7
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Question environnement de développement, j'utilise Notepad++ pour des petites retouches à l'arrache sinon pour du code plus lourd j'ai opté depuis bien longtemps pour un IDE. Je n'ai jamais configuré XDebug avec Notepad++ mais tu devrais trouver ce dont tu as besoin.

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    EDI, style Eclipse ou NetBean ? Je me souviens avoir déjà utilisé Eclipse, et ne trouvant pas d'info sur intégrer xdebug dans NPP. Donc afin de pouvoir déboguer du PHP, j'envisage d'utiliser un EDI ; lequel tu utilises ?

  9. #9
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    ne trouvant pas d'info sur intégrer xdebug dans NPP.
    Dans mon post précédent, je t'ai mis un lien vers un tuto expliquant pas à pas l'intégration de Xdebug dans N++.
    Ca ne correspond pas à tes besoins ?

    Question IDE j'utilise depuis de longues années (8 ou 9 ans maintenant) PhpED de Nusphere avec justement débogage pas à pas nativement intégré, il n'y a rien à faire.
    Tu devras mettre les mains dans le paramétrage si tu développes sur un serveur dédié indépendant de leur solution, mais bon c'est de la config, rien de bien sorcier non plus.

    Sinon pour le monde linux, j'ai opté pour Netbeans avec xdebug

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Dans mon post précédent, je t'ai mis un lien vers un tuto expliquant pas à pas l'intégration de Xdebug dans N++.
    Tu as sûrement oublié de le mettre et quand tu disais "ici", j'avais traduit "dans DVP"...

  11. #11
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Tu as sûrement oublié de le mettre

    Regarde mon message, il est horodaté 15h51 sans aucune modification depuis, donc ce n'est pas moi qui a eu un trou de mémoire mais toi qui semble avoir des problèmes oculaires

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Exact, un problème oculaire car j'avais pas vu que "ici" était un lien...

    Bon la page en question, je l'avais déjà trouvée avec Google mais abandonnée car je n'y croyais pas. Du coup, je l'ai regardée de plus près et tenté de suivre les indications. Comme indiqué, j'ai récupéré les infos données par phpinfo (de mon wamp) et ai copié le source html là où il fallait. Comme prévu, ça m'a donné des instructions que j'ai suivies mais souci pour l'étape Firefox : ça dit d'aller dans modules complémentaires/extensions puis d'y trouver easy xdebug ; or il n'y en a que 2 dont Firebug déjà activée et VideoDownloadHelper mais pas easy xdebug . En fouillant, dans catalogue et en faisant une recherche sur easy xdebug, il a trouvé 2 modules (Easy Xdebug et Easy Xdebug with moveable icon) mais en essayant d'ajouter chacun de ces 2 modules à Firefox, même message d'erreur : le module complémentaire n'a pu être installé car il ne correspond pas au module attendu par Firefox .
    PhpED est payant et je pense prendre un truc gratuit. Demain, je m'intéresserais peut-être à un EDI gratuit comme Eclipse que j'ai déjà utilisé y a 2/3 ans...

  13. #13
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Vu maintenant à la vitesse à laquelle les versions de Firefox sortent, tu m'étonnes que les extensions n'arrivent plus à suivre... Donc, ça a l'avantage d'être clair, tu dois passer sur un EDI. Bon eclipse c'est celui que je te conseillerai le moins. Après pour un petit budget, tu as phpstorm qui une fois configuré aux petits oignons est très très bien. Et dans les gratuits, l'autre serieux concurrent c'est netbeans.

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Hier soir, peu après avoir posté, j'avais installé Eclipse mais vu ce que tu dis ce matin, j'ai installé Netbeans.
    Par contre, une fois l'avoir dirigé sur mon projet, j'ai eu pendant peut-être 1/4 d'heure "background scanning of project" ; comme c'était hyper long, j'ai fermé puis réouvert NetBeans pour voir si c'était systématique, mais non...
    Par contre, j'ai essayé de tester le débogage, donc j'ai été dans le menu débogage puis sous-menu "nouveau point d'arrêt..." et après avoir nommé une méthode, "waiting for connection (netbeans-xdebug)" depuis 10 minutes ; apparemment, il voudrait se connecter à internet mais c'est un PC professionnel, donc la connexion est un peu spéciale et j'ai déjà constaté (en allant dans l'aide), que NetBeans n'arrivait pas à se connecter. Peut-on se passer de cette connexion ou est-ce foutu ?

    EDIT : je viens, après avoir annulé le processus en cours, d'essayer "déboguer un projet" et là, il a essayé de se connecter à http://localhost/eis/index.php?XDEBU...etbeans-xdebug. Donc pas étonnant qu'il n'arrive pas à se connecter. Peut-on l'empêcher de se connecter si on est en local ?

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bonjour franck-einsteinSc,

    comme d'habitude, tu n'as pas expliqué le but de la manoeuvre.
    A nous de deviner, encore une fois...

    Citation Envoyé par Tsilefy Voir le message
    Je parie que ton vrai problème est un problème d'organisation.


    Tu connais include_once ?
    C'est bien utile pour n'inclure QU'UNE SEULE FOIS des fonctions ou Classes PHP...

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    En fait, le problème initial est résolu, mais j'en ai découvert un deuxième (d'où mon changement du titre du post) et tu peux sûrement m'aider car mon souci est tout simplement de déboguer efficacement du PHP (autrement qu'en faisant de simples var_dump). Et même si il y a quelques années, j'ai un peu utilisé Eclipse comme EDI, je suis vite revenu à mon habitude : tout faire avec Notepad++ comme éditeur (et jamais utilisé de débogueur comme xdebug). Or j'aimerais gagner en efficacité, donc poser des points d'arrêt et faire de l'exécution pas à pas. Que me conseilles-tu ?

    Franck-einsteinSc

  17. #17
    Invité
    Invité(e)
    Par défaut
    echo et var_dump sont d'excellents moyens de déboguer.

    On peut aussi utiliser la dichotomie :
    "commenter" des blocs de code, progressivement, pour arriver finalement à isoler le problème.

    Mais EXPLIQUE CLAIREMENT le problème que tu rencontres !
    On pourra de guider plus efficacement

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Certes, depuis que je fais du PHP, je m'en sors avec echo et var_dump ; néanmoins je suis persuadé que je gagnerais en efficacité avec un débogueur permettant de mettre des points d'arrêt et de faire du pas à pas...ce que permet xdebug sauf que pas encore réussi à l'intégrer dans un EDI

  19. #19
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    apparemment, il voudrait se connecter à internet mais c'est un PC professionnel, donc la connexion est un peu spéciale et j'ai déjà constaté (en allant dans l'aide), que NetBeans n'arrivait pas à se connecter. Peut-on se passer de cette connexion ou est-ce foutu ?

    EDIT : je viens, après avoir annulé le processus en cours, d'essayer "déboguer un projet" et là, il a essayé de se connecter à http://localhost/eis/index.php?XDEBU...etbeans-xdebug. Donc pas étonnant qu'il n'arrive pas à se connecter. Peut-on l'empêcher de se connecter si on est en local ?
    Euh... Je me pose la question depuis le temps si tu comprends ce qu'est un environnement de développement web ?
    Un IDE va te permettre de coder plus facilement, il scanne les fichiers, construit l'auto-completion, te permet de lire les commentaires des fonctions à l'endroit où elles sont appelées... Bref, te facilite sacrément la vie.

    Ensuite, vient l'exécution, tu utilises pour cela un navigateur, un serveur web et une version du langage PHP.

    Et enfin, vient le débogage avancé qui lui va utiliser un serveur web, une version du langage PHP, un IDE avec le plugin de débogage et accessoirement un navigateur.
    Pour que tu puisses poser des points d'arrêt dans ton code et scruter les valeurs des toutes les variables, les modifier, etc... il faut que l'outil de débogage ait accès au site web pour pouvoir suspendre son exécution selon tes besoins afin que tu puisses voir ce qui se passe au moment de l'exécution de ton script. Sans accès au site, pas de débogage possible.

    Je n'ai rien compris à ton histoire de configuration de connexion professionnelle, mais bon saches que Netbeans fonctionne très bien avec XDebug à condition de le paramétrer correctement.

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 497
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Sans accès au site, pas de débogage possible.
    Parfaitement logique mais je n'y avais pas pensé...donc déboguer un site intranet ou si on est en local, pas possible...

    Citation Envoyé par rawsrc Voir le message
    Netbeans fonctionne très bien avec XDebug à condition de le paramétrer correctement.
    Le paramétrage semble se passer dans outils/options mais à quel endroit lui donne-t-on l'adresse du serveur ? Et j'avoue que même pour déboguer un site en ligne, je ne vois pas comment faire...

Discussions similaires

  1. [Plugin][RCP]Welcome page...Comment c'est fait pour celle d'Eclipse???
    Par tophebboy dans le forum Eclipse Platform
    Réponses: 12
    Dernier message: 20/07/2006, 17h27
  2. [HTML] C'est quoi la balise espace en php ?
    Par leloup84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 22/03/2006, 11h39
  3. Comment est faite la partie "réponse" de phpbb?
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 26/12/2005, 23h26
  4. Quel est l'equivalent de Explode de php ?
    Par reg11 dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2005, 15h50

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