Strohhalm

Sprung zu Navigation. Sprung zu Privat. Sprung zu StyleSwitcher. Sprung zum Inhalt.

 

Sprung zu Navigation. Sprung zu Privat. Sprung zu StyleSwitcher. Sprung zum Inhalt.

Privat

 

Anmelde-Formular



Als Strohhalm-Mitglied registrieren.

 

Sprung zu Navigation. Sprung zu Privat. Sprung zu StyleSwitcher. Sprung zum Inhalt.

Sprung zu Navigation. Sprung zu Privat. Sprung zu StyleSwitcher. Sprung zum Inhalt.

Archiv

 

strohhalm.org / Archiv / Programmierung Serverseitig / Eintrag lesen

[PHP] Absoluten Link umwandeln

  1. [PHP] Absoluten Link umwandeln

    Dr.E. 24. November 2004, 09:02

    Hallo zusammen,

    kurze Beschreibung: Ich habe in meinem CMS-Modul BB-Code-ähnliche Tags, mit denen ein Benutzer ein Bild einbinden kann. Dieses wird über eine Bilderverwaltung in einem zentralen Ordner verwaltet.

    Wenn ich nun eine Seite ausgeben möchte und da sind Bilder drin, dann habe ich ebenfalls den absoluten Pfad des Ordners verwendet, was sich aber als Fehler herausstellte. Lokal funktioniert das wunderbar, jedoch auf dem Server nicht.

    Lösung wäre aus dem absoluten Pfad (/home/www/adc.ne/htdocs/bilder), je nach Verzeichnis einen relativen Link zu generieren, der dann auch dem include_DIR meiner Bilder entspricht.

    Andere Workarounds möglich, oder hat jemand eine Idee, woran das liegen kann?

    Zur Info: Ich bilde den absoluten Link via

    $_SERVER['DOCUMENT_ROOT'].'/bilder'

    grüße,
    dr.e.

  2. Re: [PHP] Absoluten Link umwandeln

    wahsaga 24. November 2004, 09:14

    > Zur Info: Ich bilde den absoluten Link via
    >
    > $_SERVER['DOCUMENT_ROOT'].'/bilder'

    das ist aber idR. falsch, weil das document root des webservers nichts mit dem wurzelverzeichnis der domain zu tun hat.

    auf alles oberhalb von /home/www/adc.ne/htdocs hast du über http:// ja idR. gar keinen zugriff, sondern der zugriff über http:// ist erst innerhalb von htdocs möglich.


    sowas wie $_SERVER['SERVER_NAME'] (wenn richtig konfiguriert) oder $_SERVER['SCRIPT_URI'], entsprechend gekürzt, hilft vermutlich eher weiter.
    (für das "kürzen" würde sich beispielsweise parse_url() anbieten.)

  3. Re: [PHP] Absoluten Link umwandeln

    Dr.E. 24. November 2004, 09:35

    ok, danke für den Hinweis. Die obige Methode funktioniert jedoch hervorragend für Pfadangaben bei Uploads.

    werde das mal versuchen.

    grüße,
    dr.e.

  4. Re: [PHP] Absoluten Link umwandeln

    Dr.E. 24. November 2004, 09:55

    @wahsaga:

    habe das jetzt so gelöst, dass ich für Dateisystem-Zugriffe den Pfad

    $_SERVER['DOCUMENT_ROOT'].'/domain.net/bilder'

    verwende und für die Ausgaben (in img/src-Tags) den Pfad

    '/bilder'.

    ist zwar etwas umständlich, da ich das gerne gemeinsam als eine Lösung mit nur einer Pfad-Definition. Mit parse_url() konnte ich nicht die nötigen Informationen ziehen. Wünschenswert wäre eine Umwandlung eines absoluten Pfades in einen relativen an Hand der Domain gewesen.

    Ich danke dir für die Hinweise.

    grüße,
    dr.e.

  5. Re: [PHP] Absoluten Link umwandeln

    deetee 24. November 2004, 16:16

    hm, leider hab ich das Problem nicht ganz verstanden, aber wäre hier nicht ein regulärer Ausdruck angebracht?

  6. Re: [PHP] Absoluten Link umwandeln

    Dr.E. 26. November 2004, 09:15

    hallo deetee,

    folgende ausgangssituation:
    in meinem Framework gibt es ein klasse, die sich um dateisystemzugriffe kümmert (upload, kopie, verzeichnisse anlegen, löschen etc..). in dieser ist die uploadmethode definiert, die ein bild, oder allgemeiner eine datei in einen angegebenen ordner ablegt. den hier zu übergebenden pfad lege ich als konstante an (BILDER_PFAD). dieser wird, wie oben beschrieben generiert und ist dann ein string der form /home/www/abc.net/htdocs/bilder. wenn ich nun ein bild hochlade funktioniert das wunderbar, da hier mit einem absoluten pfad ein verzeichnis, auf das der apache/php zugriff hat geschrieben wird. wenn ich nun ein bild ausgeben möchte, stellt sich mir die schwierigkeit in den weg, dass ich nicht <img src="<?php echo BILDER_PFAD; ?>.bild.gif" /> schreiben kann, weil das dann letztlich einen Pfad wie externer Linkhttp://www.abc.net/home/www/abc.net/htdocs/bilder/bild.gif ergibt und dieser Pfad selbstverständlich nicht existiert. Wenn es sauber implementiert wäre, dann müsste ich nur ein Konstante definieren (absoluten Pfad) und der relative für die Bilderausgabe würde aus der Domain abc.net und dem absoluten pfad generiert werden. Und das genau ist meine Frage!

    nun klarer?

  7. Re: [PHP] Absoluten Link umwandeln

    deetee 26. November 2004, 22:29

    hi,

    das geht mit nem regulären Ausdruck oder auch mit vorhanden Funktionen. Meinst du so:


    $string = '/home/www/abc.net/htdocs/bilder';

    $relPfad = strrchr($string, '/');

    echo $relPfad; // ohne slash em Ende

    echo "<p>";

    $relPfad = $relPfad . '/';

    echo $relPfad; // mit slash am Ende

  8. Re: [PHP] Absoluten Link umwandeln

    Dr.E. 27. November 2004, 08:33

    Nein. Aber danke für deinen Versuch.

    Ich drücke mich evtl immer noch falsch für dich aus. Also versuche ich es mal in pseudo code:

    FUNKTION(DOMAIN,ABS_PFAD){
    ...
    return REL_PFAD;
    }

    Diese Funktion gibt mir bei Eingabe von

    echo FUNKTION(abc.net,/home/www/abc.net/htdocs/bilder)

    "abc.net/bilder"

    zurück.

    Jetzt klar?

    grüße,
    dr,e,

  9. Re: [PHP] Absoluten Link umwandeln

    deetee 27. November 2004, 19:44

    also im prinzip geht das shcon so wie ichs gemacht hab. hier als funktion:


    function path($url, $relPfad) {

    $relPfad = strrchr($relPfad, '/');

    // $relPfad = $relPfad . '/'; // mit slash am Ende

    $result = $url . $relPfad;

    return $result;
    }

    $pfad = path('abc.net', '/home/www/abc.net/htdocs/bilder');

    echo $pfad;


    Nur muss man aufpassen, dass man bei $relPfad nicht ein slash am Ende setzt.

  10. Re: [PHP] Absoluten Link umwandeln

    Dr.E. 29. November 2004, 08:46

    hallo deetee,

    Danke schön! Es löst aber noch nicht ganz das Problem. Und in diesem Fall komme ich eben nicht weiter. Wenn ich deine Funktion nun mit

    $pfad = path('externer Linkhttp://www.abc.net', $_SERVER['DOCUMENT_ROOT'].'/abc.net/phpfw/class');

    aufrufe, so ist bei mir lokal die Struktur, dann gibt er mir aber nur

    externer Linkhttp://www.abc.net/class

    und nicht

    externer Linkhttp://www.abc.net/phpfw/class

    zurück. Genau an diesem Problem bin ich ja gescheitert, dass ich keine Routine im Kopf habe das zu matchen. Sonst wer noch Ideen??

    grüße,
    dr,e,

 
Nach oben springen

.(c) 2002 - 2018 strohhalm.org Community.Server powered by Manitu.Software powered by Mathias Bank
.Impressum + Team.Datenschutz