Ankündigung

Einklappen
Keine Ankündigung bisher.

File_exists funktioniert nur teilweise

Einklappen

Neue Werbung 2019

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

  • File_exists funktioniert nur teilweise

    Ich habe eine IF Bedingung mit einer File_exist Abfrage programmiert.
    Rufe ich dieses Skript von Beispiel.de/Artikelverwaltung auf, funktioniert der Befehl richtig.
    Rufe ich das Skript von Beispiel.de auf, zeigt er immer ein false an.?
    Die URl ist im absoluten Pfad gehalten und die Datei gibt es nachweislich, d.h. wird auf dem Browser auch ausgegeben.

    <?PHP if (file_exists("http://beispiel.de/images/bild1_vorschau_".$artikel_id.".jpg")): ?>
    <img src='http://gastroart-berlin.de/images/bild1_vorschau_<?PHP echo $artikel_id; ?>.jpg'>
    <?PHP
    endif;


  • #2
    URLs sind keine Datei-Zeiger, auch wenn urls von file* unterstützt werden. Web Server liefern Content-Streams aus mit entsprechenden Mimetypes. Eine nicht vorhandene "Datei" auf einem Webserver liefert einen HTTP-Status-Code 404 aus.
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      Zitat von conus Beitrag anzeigen
      Ich habe eine IF Bedingung mit einer File_exist Abfrage programmiert.
      Schön für dich, aber was hat das mit "Software-Design" (im Speziellen) zu tun?

      Rufe ich dieses Skript von Beispiel.de/Artikelverwaltung auf, funktioniert der Befehl richtig.
      Rufe ich das Skript von Beispiel.de auf, zeigt er immer ein false an.?
      Die URl ist im absoluten Pfad gehalten und die Datei gibt es nachweislich, d.h. wird auf dem Browser auch ausgegeben.

      <?PHP if (file_exists("http://beispiel.de/images/bild1_vorschau_".$artikel_id.".jpg")): ?>
      <img src='http://gastroart-berlin.de/images/bild1_vorschau_<?PHP echo $artikel_id; ?>.jpg'>
      <?PHP
      endif;
      Du benutzt file_exists() hier auf eine sehr spezielle Art: Es soll herausfinden, ob auf einem "externen Server irgendwo im Internet" die angegebene Ressource vorhanden und per HTTP "abholbar" ist. Diese Funktionalität hat file_exists() nicht auf jeder PHP-Installation. Mit eingeschaltetem Error-Reporting und Log-File-Recherche kommst du der Ursache näher.

      P.S.: Deine Template-Code-Suppe finde ich zum Gruseln. Was spricht gegen:
      PHP-Code:
      $remote_url sprintf(
          
      'http://beispiel.de/images/bild1_vorschau_%s.jpg'
          
      rawurlencode($artikel_id)
      );

      // ...

      if (file_exists($remote_url)) {
          
      printf(
              
      'http://gastroart-berlin.de/images/bild1_vorschau_%s.jpg',  
              
      htmlspecialchars(rawurlencode($artikel_id))
          );

      ?
      Das ist zwar immer noch nicht das Gelbe vom Ei, aber deutlich verständlicher. Außerdem werden von irgendwoher geholte Variablen ($artikel_id) nicht mehr ohne Sicherheitsmaßnahmen in den HTML-Quellcode gedrückt.

      Bleibt noch die grundsätzliche Frage: Warum fragst du die Existenz einer Grafikdatei per HTTP ab, nur um sie anschließend in eine ausgelieferte HTML-Datei einzubinden? Das ist Ressourcen-Verschwendung. Warum liegt die Grafik nicht lokal (im Dateisystem) vor?
      Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

      Kommentar

      Lädt...
      X