Permission Denied per PHP

Apache, Lighttpd, nginx, Cherokee
cos
Posts: 29
Joined: 2007-04-20 19:56

Permission Denied per PHP

Post by cos » 2007-10-12 14:34

Hallo Leute,

ich hab mir ein Verzeichnis für eine neue Webpage angelegt, geht auch alles. Nun will ich per PHP eine Datei schreiben. Das Script kann ich über die Webseite aufrufen, da kommt "permission denied". Das Script soll ins gleiche Verzeichnis schreiben, in dem es sich selbst befindet. Rechte des Verzeichnisses sind auf 755 und der Safe Mode ist deaktiviert.

Jetzt hab ich mir sagen lassen, dass das vielleicht dran liegen könnte, dass der Ordner die falsche Gruppenrechte hat. Also das Verzeichnis mit der Webpage (in der sich auch das Script befindet) gehört sowohl dem User, als auch der Gruppe "web1".

Muss ich da irgendwelche Besitzerrechte ändern, wenn ja wie? Was muss ich eingeben? Kenn mich da nicht aus. Ich weiß das hört man ungern, aber ich will jetzt nix falsches machen und nachher nochmehr kaputt machen...

cos
Posts: 29
Joined: 2007-04-20 19:56

Re: Permission Denied per PHP

Post by cos » 2007-10-12 14:40

achso nicht falsch verstehen - nicht der Aufruf der Seite bringt mir "permission denied", sondern das Script bringt mir die Meldung "permission denied in line blabla" - also in der zeile wo ich den befehl gebe die datei anzulegen. PHP darf also die datei nicht schreiben...

Hab noch ne andere Webseite in nem anderen Ordner. Da ist der Besitzer web1 und die gruppe ist www-data und die rechte sind auf 755, hab das Script mal da rein kopiert, aber auch da bekommt das script keine Berechtigung zum schreiben von dateien:
Warning: fopen(test.txt) [function.fopen]: failed to open stream: Permission denied in /var/www/web1/html/meine-seite/test.php on line 3

Der Ordner "meine-seite" ist geändert, wegen anonymisierung und so ;-)

flo
RSAC
Posts: 2297
Joined: 2002-07-28 13:02
Location: Berlin

Re: Permission Denied per PHP

Post by flo » 2007-10-12 15:37

web1 und die gruppe ist www-data und die rechte sind auf 755


web1:www-data == web1 darf schreiben, www-data darf rein, alle anderen auch

Wenn jetzt Du Dir selber Gedanken machen würdest, wie Dein PHP läuft, eventuell unter welcher Benutzerkennung Dein Apache läuft, kannst Du das so ändern, daß es passt.

Und nein, chmod 777 ist keine gute Alternative.

flo.

synex
Posts: 45
Joined: 2005-06-17 23:00
Location: Möckern

Re: Permission Denied per PHP

Post by synex » 2007-10-12 22:24

dem user/der gruppe von dem http server schreibrechte zu geben, kommt man halt schwer rum, wenn kein (f)cgi oder ähnliches verwendet wird. (vorallem wenn man nicht selber "root" vom server ist)

also wäre die genauere konfiguration schon nicht schlecht (also wie php läuft und so)

flo
RSAC
Posts: 2297
Joined: 2002-07-28 13:02
Location: Berlin

Re: Permission Denied per PHP

Post by flo » 2007-10-12 22:43

Die eigentliche Lösung ist ja auch Pille-Palle, aber welchen chown/chmod man nun ausführen muß, weiß nur er und die _relevanten_ Infos kamen nicht.

cos
Posts: 29
Joined: 2007-04-20 19:56

Re: Permission Denied per PHP

Post by cos » 2007-10-13 18:28

flo wrote:
web1 und die gruppe ist www-data und die rechte sind auf 755


web1:www-data == web1 darf schreiben, www-data darf rein, alle anderen auch

Wenn jetzt Du Dir selber Gedanken machen würdest, wie Dein PHP läuft, eventuell unter welcher Benutzerkennung Dein Apache läuft, kannst Du das so ändern, daß es passt.

Und nein, chmod 777 ist keine gute Alternative.

flo.

Wie ist das gemeint? Unter welche Benutzerkennung der Apache läuft? Läuft der nicht mit dem User WWW Data?

Also so wie ich das verstanden hab:

Wenn web1 der User und www-data die Gruppe ist, dann darf web 1 lesen, schreiben und ausführen und www-data sowie alle anderen dürfen ausführen und lesen.

Wenn ich jetzt einstellen würde, dass www-data der user wäre und web1 die Gruppe (sofern das überhaupt geht), dann dürfte www-data lesen, schreiben und ausführen - web1 darf aber nicht mehr schreiben, ergo kann er auch keine Daten (per FTP z.B.) mehr auf den server spielen, weil er die Schreibrechte nicht hat...

Also entweder hab ich hier was vollig falsch verstanden, aber so wie mir das scheint ist die Lösung ja auch blöd, wenn ich dann keine Daten mehr hochladen darf. Ich könnte ja auf 775 umstellen, dann sollte www-data (und somit auch PHP) schreiben dürfen - Aber das ist ja bestimmt auch nicht die sauberste Lösung.

Also ich blick hier überhaupt nicht durch :-(

Wie ist das überhaupt mit den Gruppen - www-data ist also eine Gruppe, richtig? In der Gruppe müssten sich ja diverse User befinden. Wenn aber www-data eine gruppe ist, kann www-data auch kein user sein, von daher wäre mein vorschlag auch nicht möglich (also www-data zum benutzer zu machen), mal davon abgesehen, dass web1 ja auch alle rechte braucht...

cos
Posts: 29
Joined: 2007-04-20 19:56

Re: Permission Denied per PHP

Post by cos » 2007-10-13 18:35

Achso nochwas eigenartiges. Die Verzeichnisse für die Domains legt bei mit confixx an. Faszinierender Weise läuft das verzeichnis der website a mit benutzer web1, als auch mit gruppe web1 und das verzeichnis von website b läuft mit user web1 und gruppe www-data.

Befindet sich da nun web1 in gruppe web1 oder in gruppe www-data? gibts überhaupt ne gruppe web1????

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Permission Denied per PHP

Post by Joe User » 2007-10-13 19:37

So sollte es sein:
User: web1
Gruppe: web1
Dateien: 0660
Verzeichnisse: 0770
User www-date in Gruppe web1

cos
Posts: 29
Joined: 2007-04-20 19:56

Re: Permission Denied per PHP

Post by cos » 2007-10-13 20:03

Joe User wrote:So sollte es sein:
User: web1
Gruppe: web1
Dateien: 0660
Verzeichnisse: 0770
User www-date in Gruppe web1

ahh ok danke! ist www-data nicht eine gruppe? zumindest ist www-data bei manchen verzeichnissen in /var/www/web1/html/ als gruppe angegeben!?

User avatar
Joe User
Project Manager
Project Manager
Posts: 11599
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Permission Denied per PHP

Post by Joe User » 2007-10-13 20:22

Es gibt sowohl einen User als auch eine Gruppe www-data, ebenso verhält es sich mit root, webX und weiteren, siehe /etc/group und /etc/passwd...