php und symbolische links

  1. dbr

    dbr Thread StarterMacUser Mitglied

    Mitglied seit:
    28.05.2005
    Beiträge:
    45
    Zustimmungen:
    0
    pro's gefragt: php und symbolische links

    habe ein ziemlich schwerwiegendes etwas ominöses problem:

    habe mehrere webprojekte die mit den selben php-scripts arbeiten, jedoch jeweils eine eigene datenbank verwenden.

    dazu habe ich mit ln -s symolische links erstellt die auf bestimmte verzeichnisse linken in denen die scripts zentral bereitstehen.

    das ganze sieht ca. so aus:
    /scriptdir/admin/
    /scriptdir/lib/
    /scriptdir/upload

    und für ein jeweiliges projekt folgende verzeichnisstruktur:
    /project/admin -> ../scriptdir/admin
    /project/lib -> ../scriptdir/lib
    /project/upload -> kein link!!

    das problem ist jetzt folgendes.. wenn ich im projektfolder /admin/ ein uploadscript (upload.php) ausführe.. und ich der move_uploaded_file funktion einen relativen pfad zum uploadverzeichnis angebe also "../upload/uploadedfile.ext"


    aus irgendeinem mir unersichtlichen grund führt diese angabe nicht zum /project/upload folder... sondern in den /scriptdir/upload folder... d.h. das script lässt sich vom symolischen link nicht "täuschen" und geht vom original aus (also der pfad unter dem das script tatsächlich lieggt (/scriptdir/admin/upload.php )

    hoffe ich konnte es einigermaßen verständlich formulieren.

    hat jemand eine idee wie man dieses problem lösen könnte... ?

    big thx in advance!

    Dbr
     
  2. catvarlog

    catvarlogMacUser Mitglied

    Mitglied seit:
    30.01.2005
    Beiträge:
    1.468
    Zustimmungen:
    1
    ich vermute, dass der pfad des upload-dirs relativ zu deiner zentralen installation ermittelt wird. sprich: aus der sicht des skriptes wird der upload-pfad richtig ermittelt - was dir natürlich nicht weiterhilft. es scheint aber alles OK zu sein.

    du könntest den pfad zum "richtigen" upload "hart-verdrahten"... z.B.

    $folder = $clientBaseFolder."/upload/";

    echo $clientBaseFolder könnte z.B. sein:
    /var/www/kunde_1

    echo $folder wäre dann z.B.
    /var/www/kunde_1/upload/


    hoffe, das hilft weiter.
    gruss, cat.
     
    catvarlog, 13.10.2005
  3. dms

    dms

    Oder Du baust Dir eine Funktion die den Pfad übersetzt. An den aktuellen Pfad kommst Du per $_SERVER["PATH_TRANSLATED"]. Dann brauchst Du eine Funktion die den relativen Pfad auf diesen Absoluten anwendet.

    Diese Funktion könntest Du vom jeweiligen Nutzer (falls es z.B. um virtual Hosting geht) verstecken indem Du sie in die Funktion move_uploaded_file einbindest.

    -originale move_uploaded_file-Funktion umbenennen: rename_function()
    -eigene Funktion move_uploaded_file erstellen, die die Pfadumwandlung enthält und die orignale move_uploaded_file-Funktion danach aufruft.

    Das ganze kannst Du in eine Datei schreiben die Du grundsätzlich in PHP einbindest (php.ini -> auto_prepend_file)

    Ist ein dreckiger Hack, aber sollte funktionieren. :)
     
  4. catvarlog

    catvarlogMacUser Mitglied

    Mitglied seit:
    30.01.2005
    Beiträge:
    1.468
    Zustimmungen:
    1
    "dreckiger hack" in kombination mit "file upload" erzeugt bei mir eine gänsehaut :)
     
    catvarlog, 13.10.2005
  5. dms

    dms

    Nachts um 3 kommt man schon auf spannende Ideen. ;)
     
  6. Jakob

    JakobMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Aus welchem Grund kein absoluter Pfad bei der Uploadfunktion?

    Oder sonst mit document root (gibt URL an, nicht Filesystem) ($_SERVER["DOCUMENT_ROOT"]/project/upload/)
     
    Jakob, 14.10.2005
  7. catvarlog

    catvarlogMacUser Mitglied

    Mitglied seit:
    30.01.2005
    Beiträge:
    1.468
    Zustimmungen:
    1
    documentroot ist nicht immer gleich speicherort der projektdateien. das ist doch nur das wurzelverzeichnis des webservers.

    in dem fall wären alle projekte öffentlich zugänglich, das sie unterhalb des roots liegen.
     
    catvarlog, 14.10.2005
  8. Jakob

    JakobMacUser Mitglied

    Mitglied seit:
    05.01.2004
    Beiträge:
    1.067
    Zustimmungen:
    21
    Es ist der upload-Ordner. Sehe kein Problem drin, das der per URL zugänglich ist. Wenn er's denn ist, sonst geht's nicht damit, ja.
     
    Jakob, 14.10.2005
  9. wegus

    wegusMacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    ich arbeite bei sowas mit virtuellen hosts in der httpd.conf und kann so per

    /path/to/somewhere/$_SERVER['HTTP_HOST']/...

    beliebig unterscheiden. Auf die Art betreibe ich bequem 5 Webserver auf einem PIII mit 500 MHz :)
     
    wegus, 14.10.2005
  10. catvarlog

    catvarlogMacUser Mitglied

    Mitglied seit:
    30.01.2005
    Beiträge:
    1.468
    Zustimmungen:
    1
    wenn es nur der ist, dann ist es ok. in deinem beispiel ist aber der upload-ordner unterhalb des projektes

    > $_SERVER["DOCUMENT_ROOT"]/ !! project !! /upload/

    du meintest bestimmt

    > $_SERVER["DOCUMENT_ROOT"]/upload/
     
    catvarlog, 14.10.2005
Die Seite wird geladen...
Ähnliche Themen - php symbolische links
  1. mampfi
    Antworten:
    7
    Aufrufe:
    272
  2. simusch
    Antworten:
    2
    Aufrufe:
    187
    simusch
    04.05.2017
  3. Saugkraft
    Antworten:
    27
    Aufrufe:
    1.615
  4. Sir Hannes
    Antworten:
    4
    Aufrufe:
    326
    Sir Hannes
    26.11.2016
  5. alex1000
    Antworten:
    5
    Aufrufe:
    358