Merkwürdiges Verhalten von file_get_contents

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Merkwürdiges Verhalten von file_get_contents

    Hallo zusammen

    ich habe bei einem Suchscript ein kleines Problem, das ich mir nicht wirklich erklären kann. Zuerst vorweg: Mein Provider hat die URL Wrapper ausgeschaltet, daher kann die File nicht via file_get_contents("http://...") zum Durchsuchen öffnen. Ich habe dann mal probeweise file_get_contents ohne http verwendet und die Dateien wurde geöffnet. Was jetzt strange ist, ist dass bei diesen Files der html Output geöffnet wurde, obwohl sie doch über das lokale Dateisystem eingebunden wären (kein Problem, ist ja genau das was ich wollte).
    Das Prob ist nu, dass beim durchsuchen eines speziellen Scripts, der PHP Code durchsucht wird. Man kann also alle Vars etc finden.
    Ich konnte dann das Problem so lösen:
    Das fragliche Script hatte am Anfang einen echo gefolgt von einem Switch-case. Als ich die PHP Endtags am Ende des echos eingefügt habe und vor dem Switch wieder öffnende Tags funzte es plötzlich wie gewünscht.
    Ich frage mich nur warum ich erst die PHP Endtags setzen musste nur um gleich wieder zu öffnen. Unterscheidet da PHP irgendwie ?

    Danke für Eure Tipps
    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

  • #2
    OffTopic:
    hast du in dieser nacht überhaupt geschlafen?
    nein, sorry, wüsste dafür keine erklärung.

    Kommentar


    • #3
      Re: Merkwürdiges Verhalten von file_get_contents

      ich wüsste bei der fragestellung gar nicht, wofür ich eine erklärung wissen sollte ...?

      Ich habe dann mal probeweise file_get_contents ohne http verwendet und die Dateien wurde geöffnet. Was jetzt strange ist, ist dass bei diesen Files der html Output geöffnet wurde, obwohl sie doch über das lokale Dateisystem eingebunden wären
      was heißt denn "dass [...] der HTML output geöffnet wurde" ...?

      Das Prob ist nu, dass beim durchsuchen eines speziellen Scripts, der PHP Code durchsucht wird. Man kann also alle Vars etc finden.
      das ist beim einlesen eines ungeparsten PHP-scriptes doch absolut haargenau das, was von vornherein zu erwarten war.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        das ist beim einlesen eines ungeparsten PHP-scriptes doch absolut haargenau das, was von vornherein zu erwarten wa
        Genau das hätte ich auch erwartet. Dann erklär mir aber warum es nur dieses eine Script ist und bei allen anderen das File trotz url wrapper disabled wunderbar erst geparst wird. Das ist es was ich nicht kapiere. Es müsste doch logischerweise bei allen Files mit PHP gleich sein.
        PHP-Code:
        //so wurde das File nicht geparst
        <?php
        echo "blablablabla";
        switch(
        $array)
        {
          case 
        "irgendwas":
              echo 
        "sonst was";
          break;
        ...
        }
        ?>

        //so wird das File geparst
        <?php
        echo "blablablabla";?>
        <?php
        switch($array)
        {
          case 
        "irgendwas":
              echo 
        "sonst was";
          break;
        ...
        }
        ?>
        Hoffentlich ist es nun besser verstädnlich was ich meinte
        hast du in dieser nacht überhaupt geschlafen?
        Ich arbeite Schicht und bin diese Woche auf der Frühschicht. Ich geh dafür abends früh ins Bett

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          ohne einen kompletten test-case kann man dazu wohl kaum näheres sagen.
          ich vermute einen interpretationsfehler deinerseits :-)
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            ich vermute einen interpretationsfehler deinerseits :-)
            Das habe ich erst auch vermutet. Aber das Ergebnis ist zu 100 % reproduzierbar. Keine PHP Tags dazwischen --> File scheint nicht geprast zu werden, wenn die Tags dazwischen vorhanden --> File wird sauber geparst.
            Gerade eben habe ich auf dem Server die Tags wieder entfernt und siehe da der Quellcode wurde durchsucht.

            Danke und Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Original geschrieben von jahlives
              Das habe ich erst auch vermutet. Aber das Ergebnis ist zu 100 % reproduzierbar. Keine PHP Tags dazwischen --> File scheint nicht geprast zu werden, wenn die Tags dazwischen vorhanden --> File wird sauber geparst.
              also ich habe das anhand deiner code-auszüge mit einem kleinen beispielscript ausprobiert, und konnte nichts dergleichen feststellen.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                also ich habe das anhand deiner code-auszüge mit einem kleinen beispielscript ausprobiert, und konnte nichts dergleichen feststellen
                Danke vielmal für's probieren. Ich denke, dass dürfte ein Konf Problem seitens meines Providers sein. Weil mit url wrapper disabled sollte ein file_get_contents() die Datei ja via lokales Dateisystem einbinden. Was aber nicht geschieht --> sonst müssten mehr Files mit dem Suchkriterium $ gefunden werden.
                Also ich werde mal meinen Provider fragen, aber ich fürchte die haben keinen Schimmer warum das so sein könnte.

                Danke und Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  Original geschrieben von jahlives
                  Was aber nicht geschieht --> sonst müssten mehr Files mit dem Suchkriterium $ gefunden werden.
                  ähm ... ist das - dass kein treffer für eine suche nach $ gefunden wurde - etwa das einzige kriterium, an dem du deine beobachtung festmachst, die dateien seien geparst worden ...?
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Also wenn $ nicht gefunden wird, dann kann ich doch davon ausgehen, dass das File geparst wurde. Oder irre ich mich da
                    Ich habe die PHP Tags wieder entfernt. Wenn du willst kannst du das auch Live sehen Suche . Einfach mal $ oder irgendwat PHP mässiges eingeben (switch, case oder was ich sonst gecodet habe).
                    Poste wenn du es gesehen hast und ich mache die PHP Tags wieder rein und du kannst nochmals sehen, dass dann nix gefunden wird.

                    Danke für die Unterstützung

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Original geschrieben von jahlives
                      Poste wenn du es gesehen hast und ich mache die PHP Tags wieder rein und du kannst nochmals sehen, dass dann nix gefunden wird.
                      ich konnte auch jetzt schon kein $, switch oder case finden ...

                      aber per suche ist mir das eh zu ungenau, da kann man wohl kaum ausschließen, dass der fehler nicht doch woanders liegt.

                      mein kleines testscript sah in etwa wie folgt aus:
                      PHP-Code:
                      <html>
                      <body>
                      <pre>
                      <?php

                      $datei1
                      file_get_contents("test1datei.php");
                      echo 
                      "<h1>datei 1:</h1>\n".nl2br(htmlspecialchars($datei1));

                      $datei2file_get_contents("testdatei2.php");
                      echo 
                      "\n\n<h1>datei 2:</h1>\n".nl2br(htmlspecialchars($datei2));

                      ?>
                      </pre>
                      </body>
                      </html>
                      probier's doch bitte mal damit, in dem du für die eine datei dein script ohne zusätzliche und für die zweite mit den fraglichen zusätzlichen <?php>-tags angibst.

                      wenn da, trotz einlesen über's dateisystem, irgendwas geparst wird - dann dürftest du ja <?php ...?> in der ausgabe für die jeweilige datei gar nicht mehr zu sehen bekommen.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        ich konnte auch jetzt schon kein $, switch oder case finden ...
                        Habe es gerade eben nochmals probiert und ich finde sehr wohl switch, case und $
                        Deinen Code Schnippel werde ich gleich auch noch probieren.

                        Danke und Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          Original geschrieben von jahlives
                          Habe es gerade eben nochmals probiert und ich finde sehr wohl switch, case und $
                          ok, ich hatte "groß-/klein-schreibung ignorieren" nicht aktiviert.

                          allerdings leuchtet mir jetzt auch nicht so ganz ein, warum die suche nach kleingeschriebenen "switch" ein kleingeschriebenes "switch" nur dann findet, wenn ich diese option aktiviere ...?
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            switch wird bei mir mit oder ohne Gross-Kleinschreibung gefunden.

                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              Was genau übergibst du denn file_get_contents()?
                              Du sagtest mit 'http://example.com/file.php' hat es wegen allow_url_fopen = Off nicht geklappt. Daraufhin hast du http weggelassen. Rufst du jetzt also mit 'example.com/file.php' auf oder per lokalem Pfad?

                              Wenn du zusätzliche PHP-Tags einfügst und dann wird der Quelltext indiziert, hast du es dann auch schon mal mit Short Tags probiert?

                              Kommentar

                              Lädt...
                              X