Rechte Problem

  • Moin Moin,
    habe folgendes Problem:
    Möchte mit PHP im WWW Verzeichnis Datei erstellen bzw. datei auch per PHP mit Inhalt füllen.
    Beispielcode:
    <?php


    $datei = fopen("/var/www/counter.txt","r+");
    $counterstand = fgets($datei, 10);
    if($counterstand == "")
    {
    $counterstand = 0;
    }
    $counterstand++;
    echo $counterstand;
    rewind($datei);
    fwrite($datei, $counterstand);
    fclose($datei);
    ?>


    Kann aber weder datei erstellen noch eine mit Inhalt füllen.
    Ergo ein Rechte Problem.
    Wie und Wo muss ich die Rechte ändern.


    Danle schon mal für die Hilfe.


    Gruß Paul

  • Wem gehört der Ordner, wo es rein soll?
    Welche Rechte sind für ihn vergeben?
    Unter wessen Namen wird das Script gestartet?
    Woher weißt du dass es ein Rechte Problem ist?
    Warum sehe ich kein Error_reporting?



    Du solltest noch über RaceConditions nachdenken.
    Auch , wenn du Zeilen ließt, dann auch Zeilen schreiben, sonst spielen dir irgendwann stehengebliebene Datenfragmente einen Streich.

  • Die Rechte kannst du über die Kommandozeile setzen, wenn du den Server nur im Heimnetz verwenden möchtest dann gibt einfach folgenden Befehl auf der Kommandozeile ein:


    Code
    sudo chmod -R 0755 /var/www


    danach sollte das Skript Fehlerfrei laufen.

  • Hi, erst mal Danke fürs Antworten.
    www ordner gruppe root user root rechte 755
    php Datei gruppe root user root rechte 755



    Unter wessen Namen wird das Script gestartet? Starte die php über den Browser.


    Das Script läuft auf XAMMP ohen Probs.


    Im Browserfenster kommt " Die Datei kann nicht geschrieben werden"


    Gruß Paul

  • Quote


    Unter wessen Namen wird das Script gestartet? Starte die php über den Browser.


    Dann dürfte das Script unter dem Apache gestartet werden.
    Also sind User und Gruppe vermutlich www-data.



    Quote


    php Datei gruppe root user root rechte 755


    Es ist weder sinnvoll, root als Eigentümer zu haben, noch die x Rechte zu setzen.


    Ich melde mich als pi an und erstelle meine php Dateien im www Verzeichniss ohne x Rechte.


    Dirty Hack:
    Versehe /var/www mit 0777
    Für die PHP Dateien reicht 0644


    Dann mache dich mit dem Rechtesystem vertraut. So dass du das www Verzeichnis wieder vernünftig einschränken kannst.



    PS:
    An den Anfang einer PHP Datei gehört zu Fehlersuche das aktivieren des error_reporting.
    Oder willst du gar nicht sehen was falsch läuft?
    Auf einem Entwicklungssystem sollte error_reporting und display_errors in der php.ini aktiviert werden. Denn dann bekommst du auch Parseerrors zu sehen.
    Auf öffentlich zugänglichen Systemen sollte das error_reporting abgeschaltet werden, um Angreifern möglichst wenig Informationen zu liefern.


    meigrafd
    Ja, das ist wichtig. Und richtig.




    So in etwa:
    (das locking fehlt noch)

  • hier das log:
    Warning: fopen(counter.txt): failed to open stream: Permission denied in /var/www/schreiben.php on line 6

    Warning: fgets() expects parameter 1 to be resource, boolean given in /var/www/schreiben.php on line 7
    1
    Warning: rewind() expects parameter 1 to be resource, boolean given in /var/www/schreiben.php on line 14

    Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/schreiben.php on line 15

    Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/schreiben.php on line 16

  • Hi,
    es geht ums verrecken nicht.
    wenn ich die counter.txt im www erstelle kommt keine Fehlermeldung mehr aber er schreibt immer noch nicht in die txt rein.

    • Official Post

    Hast du nach dem erstellen auch den Besitzer geändert?

    Code
    chown -R www-data:www-data /var/www

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.