Ankündigung

Einklappen
Keine Ankündigung bisher.

file_exists() und [url]http://localhost[/url]...

Einklappen

Neue Werbung 2019

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

  • file_exists() und [url]http://localhost[/url]...

    hallo,
    irgendwie erscheint mir etwas unlogisch:
    wenn ich diesen pfad in meinen browser eingebe sehe ich das bild:
    "http://localhost/awg/data/thumbs/ve_182.jpg"

    wenn ich nun aber mit mit file_exists() abfrage, ob das bild da ist, liefert mir die funktion "false" zurück. wieso?!

    PHP-Code:
    <?php

    $pic 
    "http://localhost/awg/data/thumbs/ve_182.jpg";
    $noPic "http://localhost/awg/data/thumbs/_noPic.jpg";

    if (
    file_exists($pic) )
    {
        print 
    $pic;
    }
    else
    {
       print 
    $noPic;
    }
    ?>
    kann mir jemand helfen?

    mfg embee


  • #2
    file_exists() geht nicht über http.
    Diese Erweiterung ist EXPERIMENTELL.
    [...]
    Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..

    Kommentar


    • #3
      nö?
      wie kann ich denn sonst den pfad überprüfen?!
      aus technischen gründen muss ich immer beim "anfangspunkt" vom pfad anfangen.

      kannst du mir da weiter helfen?

      Kommentar


      • #4
        http://localhost/awg/data/thumbs/ve_182.jpg
        -> file_exists('/awg/data/thumbs/ve_182.jpg');
        Diese Erweiterung ist EXPERIMENTELL.
        [...]
        Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..

        Kommentar


        • #5
          nee, das geht so nicht.

          mir geht es darum:
          das script wird an unterschiedlichen stellen im verzeichnissbaum aufgerufen.
          manchmal in http://localhost/awg/datei.php
          manchmal in http://localhost/awg/data/datei.php
          ...

          eben immer an verschiedenen stellen. dadurch kann ich den pfad nicht von meiner ausgangsdatei erstellen. ich hoffe du verstehst was ich meine...

          Kommentar


          • #6
            Zitat von embee
            immer beim "anfangspunkt" vom pfad anfangen
            file_exists('/oberster_ordner/einer_tiefer/noch_einer_tiefer');
            Diese Erweiterung ist EXPERIMENTELL.
            [...]
            Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..

            Kommentar


            • #7
              meine datei die ich überprüfen mochte liegt hier:
              "http://localhost/_web/awg/data/gfx_immo/thumbs/ve_182.jpg"

              meinst du das so:
              PHP-Code:
              <?php
              $pic 
              "/_web/awg/data/gfx_immo/thumbs/ve_182.jpg"
              $noPic "/_web/awg/data/gfx_immo/thumbs/_nichtDA.jpg"

              if (
              file_exists($pic) ) 

                  print 
              $pic

              else 

                 print 
              $noPic

              ?>
              hier gibt er auch false zurück, also "_nichtDA.jpg".

              komisch.

              Kommentar


              • #8
                hab was gefunden:

                $__SERVER['document_root'] !

                PHP-Code:
                <?php
                $file 
                $_SERVER['DOCUMENT_ROOT'] . "/_web/awg/data/gfx_immo/thumbs/ve_182.jpg";
                if(
                file_exists($file)) 
                {
                    print 
                "JA!";
                }
                else
                {
                    print 
                $file " existiert nicht!";
                }
                ?>
                das klappt!

                aber ist das wirklich so gut, da er ja nun wirklich den pfad:
                file:///C:/Programme/xampp/htdocs/_web/awg/data/gfx_immo/thumbs/ve_182.jpg benutzt!

                funktioniert dies dann später auch im "echten" internet? oder ist das eine dumme frage?

                Kommentar


                • #9
                  Ja sollte, da der Document Root dynamisch ist. Probleme könnts geben, wenn du deine Homepage dann in einen Unterordner der Domain ablegst. Habe das Problem allerdings nicht, da meine Include-Dateien die "Berechnung" der aktuellen Position im Verzeichnis-Baum übernehmen. Ich kann sowas nur empfehlen.

                  Kommentar


                  • #10
                    ich habe meine verknüpfung zu der datei ja eigendlich auch in einer datei die in eine andere includet wird.

                    berechnet er denn immer den pfad direkt vom "standpunkt" der include-datei??? oder von der datei in die sie includet wird?

                    verstehst du was ich meine?

                    mfg embee

                    ps: document_root geht nicht, da "///file/c: ..." immer von der eigenen festplatte ausgeht, und nicht vom server, müsste dann ja so sein: "//192.168.2.1/c: ..."

                    Kommentar


                    • #11
                      PHP ist eine serverseitige Scriptsprache, wird dir also nie den Pfad der "eigenen" (Usersicht) Festplatte liefern. Wenn es das doch tut, testest du noch lokal.

                      Du kannst auch Serverpfad nicht mit Web-Adresse vergleichen.

                      Meine inc.constants.php liegt im Root-Ordner des Projekts. Sie ist sicher nicht optimal, aber vielleicht kannst du dir ja ein paar Sachen rauskopieren, die interessant für dich sind:

                      PHP-Code:
                      <?php
                      function formatPath($path)
                      {
                          
                      //  doppelte / durch ein / ersetzen
                          
                      $path preg_replace("/\/{2,}/""/"$path);
                          
                      $path preg_replace("/[\\\]{1,}/""/"$path);
                          
                      // (doppelte) \ durch / ersetzen
                          
                      if(strrpos($path"/") != (strlen($path) - 1)) {
                              
                      $path .= "/";
                          }
                          return 
                      $path;
                      }

                      define("_DOCROOT",       formatPath($_SERVER["DOCUMENT_ROOT"]));
                      define("_PROJECT",       str_replace(_DOCROOT""formatPath(dirname(__FILE__))));
                      define("_PROJECTROOT",   _DOCROOT _PROJECT);
                      define("_WEB",           "/" _PROJECT);
                      define("_WWW",           "http://" $_SERVER["HTTP_HOST"] . "/" _PROJECT);
                      ?>

                      Kommentar


                      • #12
                        das ist ja interessant.
                        wie benutzt du den später diese "define" (definierung?). werden das einfache variablen?!

                        Kommentar


                        • #13
                          aha:
                          http://www.php.net/manual/de/function.define.php

                          ok, war mit der frage zu schnell

                          Kommentar


                          • #14
                            Das sind Konstanten und damit überall im Folgescript verfügbar (Funktionen, Klassen).

                            z.B.
                            PHP-Code:
                            <?php
                            print '<link href="' _WEB _CSS 'default.css'" rel="stylesheet" type="text/css" media="all" />';
                            ?>
                            _CSS hatte ich auch mit 'css/' definiert, aber rausgelassen.
                            Ist sehr komfortabel, da du das Projekt eigentlich beliebig verschieben kannst, da es die eigene Position im Ordner-Verzeichnis ja selbst ermittelt mit dirname(__FILE__) und im Verhältnis zum DOCUMENT_ROOT setzt (das der Server liefert).

                            Kommentar


                            • #15
                              das ist echt ne tolle sache.
                              aber du musst schon die datei immer includen (in der die define() stehen) oder muss man die nur einmal starten?

                              ich habe gerade mal was richtig neues und gleichzeitig gutes gelernt. ein lob auf zergling

                              Kommentar

                              Lädt...
                              X