itebob
Goto Top

Schreib-Berechtigung für PHP-Anwendung unter Debian

Hallo,

ich möchte mit so einer Datei schreiben.php:
<?php
$daten = "Ein neuer Dateiinhalt";  
$dateihandle = fopen("beispiel.txt","w");  
fwrite($dateihandle, $daten);
?>

eine neue Datei erstellen. Das Beispiel oben funktioniert auf dem Webspace meines Providers. Aber auf einem anderen Debian-System, wo ich die Möglichkeit habe, die Berechtigungen zu ändern, funktioniert das Beispiel oben _nicht_. Welche Einstellungen muss ich auf dem Debian-System anpassen, damit
 
fwrite($dateihandle, $daten)
eine neue Datei erstellt? Momentan ist für die Datei schreiben.php rw-r--rw- (0646) als Berechtigung auf dem Debian-System gesetzt.

PHP ist unter Debian als Apache-Modul installiert.

Gruss, Gustav

Content-Key: 279133

Url: https://administrator.de/contentid/279133

Printed on: April 18, 2024 at 09:04 o'clock

Member: kaiand1
kaiand1 Aug 04, 2015 at 13:27:35 (UTC)
Goto Top
Moin
Hört sich nach ein Rechte Problem an.
Das Script selbst muss Schreibrechte haben sowie als User unter dem es Ausgeführt wird auch in das Verzeichniss Schreiben dürfen.
Zudem in den Logs gibt es Infos wiso es nicht geht.
Member: itebob
itebob Aug 04, 2015 at 13:32:08 (UTC)
Goto Top
das schreiben.php-Beispiel funktioniert, wenn ich dem Ordner mit der datei schreiben.php die 0775-Berechtigung gebe.
Mitglied: 119944
119944 Aug 04, 2015 at 13:48:49 (UTC)
Goto Top
Moin,

das schreiben.php-Beispiel funktioniert, wenn ich dem Ordner mit der datei schreiben.php die 0775-Berechtigung gebe.
Ja sicher, da die Rechte zum ausführen --x bei dir gefehlt haben.

Am besten du änderst den Besitzer der Datei auf den "www" user und setzt die rechte 700 wenn das dann reicht.

VG
Val
Member: Arano
Solution Arano Aug 04, 2015, updated at Aug 05, 2015 at 06:58:35 (UTC)
Goto Top
Genau.

Deine PHP-Datei wird ja vom Webserver gelesen und dann mithilfe von PHP interpretiert.
Webserver -> PHP -> Datei
Der Webserver bleibt aber der ausführende Prozess. Somit muss der Webserver Schreibrechte auf die Zieldatei/-verzeichnis haben.

Das Script selber muss in diesem Fall nur gelesen werden können. Es sei den die Datei selber soll beschreiben werden.
Muss die Zieldatei erst noch erstellt werden, so benötigt der Webserver Schreibrechte in dem Verzeichnis in dem die Datei erstellt werden soll.

Valexus hat da schon nicht unrecht ABER schau wie die Besitzrechte auf dem Zielserver sind !
Oft habe ich es gesehen, das die Daten zwar dem Besitzer (ftp-account) gehören (User und Group), der Webserver aber nur über die "Other" seine Erlaubnisse bekommt. Dann müsstest du ggf. bei jedem Upload die Dateirechte neu vergeben müssen bzw. sie dem Livesystem anpassen müssen.

Am besten du änderst den Besitzer der Datei auf den "www" user und setzt die rechte 700 wenn das dann reicht.
Das wiederum wäre blöde, denn damit sperrst du dich selber aus !
So dürfte nämlich NUR der Benutzer "www" auf die Datei zugreifen: 0700 = -rwx------, Gruppenuser und alle anderen(Other) dürfen genau Null/Nix/Nothing.


~Arano
Member: itebob
itebob Aug 05, 2015 at 07:26:25 (UTC)
Goto Top
@ @Arano
Oft habe ich es gesehen, das die Daten zwar dem Besitzer (ftp-account) gehören (User und Group), der Webserver
aber nur über die "Other" seine Erlaubnisse bekommt. Dann müsstest du ggf. bei jedem Upload die Dateirechte neu
vergeben müssen bzw. sie dem Livesystem anpassen müssen.

Bei mir ist es der Fall. Wo kann ich nachschlagen, wann ist es notwendig, dass der Webserver
nur über die "Other" seine Erlaubnisse bekommt?
"Other"sind beliebige nicht angemeldete Besucher der Website - korrekt?

~ Gustav
Member: Arano
Solution Arano Aug 05, 2015 updated at 17:37:58 (UTC)
Goto Top
Moin moin !

Nein! "other" sind alle anderen, auf dem Server angelegten, Benutzer.
Alle Besucher machen eine Anfrage an den Webserver und der greift dann auf die Dateien zu.
Die anderen User deines Hosters werden aber wahrscheinlich nicht auf deine Dateien zugteifen können, da sie in ihr Verzeichnis "eingesperrt" sind - da brauczt man sich also keine Gedanken zu machen.

Wie es letzt endlich bei dir sein muss, kann die nur dein Hoster beantworten.
Oft ist es so, das Beitzer und Gruppe alles dürfen und Andere nur lesezugriff haben = 0775.
Wenn du nun auf eine Datei oder ein Verzeichnis zusätzlich schreibrechte benötigst (z.b. für other), so wäre das ein 0777.

Schau doch mal bei deinem Hoster in die FAQs, das sollte da eigentlich zu funden sein.


~Arano