

Anmelde-Formular

Strohhalm Spendenkonto
Konto-Inhaber: Mathias Bank
Konto-Nummer: 83 04 297
BLZ: 200 905 00
Kreditinstitut: Netbank AG
Hinweis: Die Spenden werden bis auf weiteres ausschließlich dafür eingesetzt, den Strohhalm gegen rechtliche Angriffe zu schützen. Ein anderer Verwendungszweck muss von der gesamten Administration genehmigt werden.
aktueller Spendenstand: 188.01 €

strohhalm Standard (aktiv) von baumeister
(Noch keine User-Stylesheets vorhanden)
Hinweis: Zum Wechseln der Styles muss ein Cookie akzeptiert werden. Jedes registrierte Community-Mitglied darf eigene Styles entwickeln und einreichen. Ausführliche Infos unter Styleswitcher-Hilfe.
Neue Styles an baumeister@strohhalm.org senden.

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.
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.)
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.
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.
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?
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
http://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?
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
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,
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.
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('
http://www.abc.net', $_SERVER['DOCUMENT_ROOT'].'/abc.net/phpfw/class');
aufrufe, so ist bei mir lokal die Struktur, dann gibt er mir aber nur
http://www.abc.net/class
und nicht
http://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,