Mailinglisten-Archive |
Ralf Beutler wrote: > <snip> > $file_id = fopen("fortsetzungen/".$file_name.".mcs", "w") or die("Fehler > beim ..."); > $ok = fputs($file_id, $new_txt) or die("Fehler beim ..."); > $ok = fclose($file_id) or die ("Fehler beim ..."); > > chmod("verzeichnis/".$file_name.".txt", 0766); > </snip> > > ___Das funktioniert. > > Nur habe ich jetzt eine Datei in meinem Verzeichnis, > die Lese- und Schreibrechte auf den other-Rechten hat. > Da dachte ich mir, ändere doch einfach bei einer bestehenden Datei > mit nur Leserechten mit gleichem Befehl die Rechte > auf Lesen und Schreiben > und öffne dann die Datei zum schreiben. > Nach dem Schließen der Datei setzte ich die rw- Rechte > wieder auf r-- für other zurück. > Aber das funktioniert nicht! > error: chmod schlägt fehl mit der Meldung: "You have no permission to ...". > Warum habe ich (mein Script) keine Rechte dafür? Kurze Antwort aus Stuttgart (die ellenlange wird bestimmt Morgen von Kristian folgen, ups die ist ja schon da und auch noch so winzig): der Apache wird standartmäßig unter dem User nobody und der Gruppe nogroup betrieben. Wenn man dann andere Dateien, die einem anderen Benutzer oder einer anderen Gruppe gehöhren, ändern will, dann die obige Fehlermeldung. Da nobody/nogroup fast keine Rechte besitzen bleibt oft nur der Umweg über den User root. Das sollte man aber aus Sicherheitsgründen lieber dem Systemadministrator überlassen. > Problem: die Dateien liegen mit Lese und Schreibrecht auf dem Webserver. > Deswegen wollte ich kurz vor dem Öffen und gleich nach dem Schließen die > Rechte verändern. > Aber das geht bei mir nicht!!!!! :-((( oder ich bin zu blöd Ne, ich bin auch nur ein normaler Benutzer, und die obigen Fehlermeldungen sehe ich auch häufig, wenn man etwas ändern will, was man nicht machen sollte. Das ist mit einer Shell im Prinzip genau dasselbe. Ich würde nie darauf kommen, das mit PHP zu tun. Soweit ich Dich verstanden habe, willst Du Dateien die nicht von PHP angelegt worden sind, mit den obigen Methoden verändern. Dazu nimmt man eine Shell, wechselt auf den User root und macht einen rekursiven chown. Danach sollte es gehen. > p.s. kleine Frage noch: > ich habe bei euch die Empfehlung gelesen, mit "or die" zu arbeiten. > Die Fehlermeldungen des php-parsers werden aber trotzdem angezeigt, plus > meine persönliche Meldung. > Ich dachte, man kann damit Fehlermeldungen abfangen wie in Java? Aber is > wohl nicht.?!? Fehlermeldungen kann man mit dem _(at)_ Zeichen unmittelbar vor dem Funktionsnamen unterdrücken. -Egon
php::bar PHP Wiki - Listenarchive