Beiträge von MAD M!NDWORX

    original Thread: PHP Funktion "move_upload_file" und die Rechte



    1) tmp Image erstellen. Ich habe eine Größe von 500mb gewählt (count=512000). Da es nur für Dateiuploads verwendet wird, die sowieso wieder gelöscht werden, sollte das ausreichen.

    Code
    /# dd if=/dev/zero of=/tmp.img bs=1024 count=512000


    2) Anschließend muss das Image formatiert werden. Das Dateisystem ist natürlich frei wählbar, ich habe mich für ext3fs entschieden.

    Code
    /# mkfs.ext3 /tmp.img
    /tmp.img ist kein spezielles Block-Gerät.
    Trotzdem fortsetzen? (y,n) -> y


    3) Nun noch /etc/fstab öffnen und das Image hinzufügen. Hier habe ich als Verzeichnisname /tmp_php gewählt, da in dieses tmp nur die PHP Uploads kommen sollen, nichts anderes.

    Code
    /tmp.img   /tmp_php   auto   loop   1   1


    4) Jetzt noch /tmp_php im Dateisystem erstellen und Dateirechte setzen.

    Code
    /# mkdir /tmp_php
    /# chmod a+rwxt /tmp_php


    5) Nun noch das Image mounten:

    Code
    /# mount /tmp_php


    Wenn alles korrekt abgelaufen ist, sollte df -h /tmp_php folgendes ausgeben:

    Code
    /# df -h /tmp_php
    Dateisystem          Größe Benut  Verf Ben% Eingehängt auf
    /tmp.img              485M  8,1M  452M   2% /tmp_php


    6) Damit php nun auch die Uploads in das neue /tmp_php schiebt, sollte in der /usr/local/pd-admin2/lib/php.ini das neue Upload Verzeichnis angegeben werden:

    Code
    upload_tmp_dir = /tmp_php


    7) Jetzt den Apache neu starten und es ist geschafft

    Code
    /# /opt/pdadmin/bin/httpd_vhosts.pl


    Das wars auch schon. Nun werden die Schreib/Leserechte bei move_uploaded_file von PHP korrekt auf 644 gesetzt.


    VORHER:

    Code
    /# ls -al
    -rw-r--r--  1 xxxxxxxx xxxxxxxx 9734 2007-01-23 12:06 copy.gif
    -rw-------  1 xxxxxxxx xxxxxxxx 9734 2007-01-23 12:06 move_uploaded_file.gif

    NACHHER:

    Code
    /# ls -al
    -rw-r--r--  1 xxxxxxxx xxxxxxxx 9734 2007-01-23 12:13 copy.gif
    -rw-r--r--  1 xxxxxxxx xxxxxxxx 9734 2007-01-23 12:13 move_uploaded_file.gif


    VIEL ERFOLG!

    Die Idee mit dem Loop-Device ist gut und funktioniert. Hier mal fix eine Anleitung:


    1) tmp Image erstellen. Ich habe eine Größe von 500mb gewählt (count=512000). Da es nur für Dateiuploads verwendet wird, die sowieso wieder gelöscht werden, sollte das ausreichen.

    Code
    /# dd if=/dev/zero of=/tmp.img bs=1024 count=512000


    2) Anschließend muss das Image formatiert werden. Das Dateisystem ist natürlich frei wählbar, ich habe mich für ext3fs entschieden.

    Code
    /# mkfs.ext3 /tmp.img
    /tmp.img ist kein spezielles Block-Gerät.
    Trotzdem fortsetzen? (y,n) -> y


    3) Nun noch /etc/fstab öffnen und das Image hinzufügen. Hier habe ich als Verzeichnisname /tmp_php gewählt, da in dieses tmp nur die PHP Uploads kommen sollen, nichts anderes.

    Code
    /tmp.img   /tmp_php   auto   loop   1   1


    4) Jetzt noch /tmp_php im Dateisystem erstellen und Dateirechte setzen.

    Code
    /# mkdir /tmp_php
    /# chmod a+rwxt /tmp_php


    5) Nun noch das Image mounten:

    Code
    /# mount /tmp_php


    Wenn alles korrekt abgelaufen ist, sollte df -h /tmp_php folgendes ausgeben:

    Code
    /# df -h /tmp_php
    Dateisystem          Größe Benut  Verf Ben% Eingehängt auf
    /tmp.img              485M  8,1M  452M   2% /tmp_php


    6) Damit php nun auch die Uploads in das neue /tmp_php schiebt, sollte in der /usr/local/pd-admin2/lib/php.ini das neue Upload Verzeichnis angegeben werden:

    Code
    upload_tmp_dir = /tmp_php


    7) Jetzt den Apache neu starten und es ist geschafft

    Code
    /# /opt/pdadmin/bin/httpd_vhosts.pl


    Das wars auch schon. Nun werden die Schreib/Leserechte bei move_uploaded_file von PHP korrekt auf 644 gesetzt.


    VORHER:

    Code
    /# ls -al
    -rw-r--r--  1 xxxxxxxx xxxxxxxx 9734 2007-01-23 12:06 copy.gif
    -rw-------  1 xxxxxxxx xxxxxxxx 9734 2007-01-23 12:06 move_uploaded_file.gif

    NACHHER:

    Code
    /# ls -al
    -rw-r--r--  1 xxxxxxxx xxxxxxxx 9734 2007-01-23 12:13 copy.gif
    -rw-r--r--  1 xxxxxxxx xxxxxxxx 9734 2007-01-23 12:13 move_uploaded_file.gif


    VIEL ERFOLG!

    Das SKEL Verzeichnis wird sicherlich einfach in das Kundenverzeichnis kopiert und dabei keine Datei verändert.


    $_SERVER["HTTP_HOST"] in einer index.php unterzubringen funktioniert zwar, allerdings nur wenn für den Kunden auch PHP aktiviert wurde.


    Javascripttechnisch könnte man auch document.URL (als substr) ausgeben, was aber auch wieder nicht geht wenn der Besucher kein Javascript eingeschaltet hat. Aber dafür gibts ja auch <noscript>.


    Also wenn man wirklich die Domain auf der Standardseite möchte, gibt es schon Möglichkeiten...

    Hallo.


    Ich hatte das Problem, daß bei einem Shop die suchmaschinenfreundlichen URLs verwendet wurden. Das funktionierte nicht, da getenv('PATH_INFO') immer den Scriptnamen mit enthielt. Daher habe ich zur Lösung einfach die PHP_SELF von der Path_Info entfernt.


    in /includes/application_top.php, Zeile 3403:


    [php]$vars = explode('/', substr(getenv('PATH_INFO'), 1));[/php]


    ersetzen durch


    [php]$vars = explode('/', substr( str_replace($PHP_SELF,'',getenv('PATH_INFO')), 1));[/php]


    Voila, nun funktionieren auch die SuMa-freundlichen URLs.


    Nachtrag: Die Zeile


    [php]$PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF);[/php]


    sollte auskommentiert werden.


    /mad

    Installierte pd-admin-Version: v3.37
    Installierte Version d. Serverumgebung: 1-0.076



    Hallo,


    gibt es eine Möglichkeit, an eingerichtete Postfächer direkt Mails zu schreiben, ohne die zugehörige Domain zu verwenden? Also quasi an Benutzerkonto@pd-admin-server.url ?


    Das wäre ziemlich hilfreich beim Umzug einer Domain, falls noch nicht alle Nameserver umgestellt sind oder die Domain (z.B. bei puretec) vertraglich noch einige Zeit weiterläuft und somit durch die Einträge im lokalen Nameserver Mails innerhalb der Serverfarm noch an das alte Postkonto gesendet werden. Dann bräuchte man dort nur eine Weiterleitung der Mails an Benutzerkonto@pd-admin-server.url einrichten und schwupps landet alles wo es soll.


    Allerdings habe ich bis jetzt noch nicht herausgefunden, an welchen User man weiterleiten muss. Benutzerkonto@umzugsdomain.tld.pd-admin-server.url funktioniert leider genausowenig wie Benutzerlogin-umzugsdomain.tld-adresse@pd-admin-server.url


    Vielleicht weiss ja jemand Rat? Vielen Dank!


    /michael