Kein copy mit PHP möglich (upload)

Bash, Shell, PHP, Python, Perl, CGI
Post Reply
frankp
Posts: 6
Joined: 2003-09-22 11:52
Contact:
 

Kein copy mit PHP möglich (upload)

Post by frankp »

Hallo,

wenn ich unter PHP einen Upload machen will (mit copy) bekomme ich die Fehlermeldung "Permission denied". Die Schreibrechte im Zielverzeichnis fehlen.
Warning: Unable to create '/home/www/web1/html/dir1/uploaddir/xyz.gif': Permission denied in /home/www/web1/html/dir1/fileupload.php on line 120
Wenn ich per FTP das Verzeichnis auf 0777 setze, dann geht es, aber per script mit "chmod ("uploaddir", 0777);" bekomme ich den Fehler "Operation not permitted".

Der Owner ist web1/ftponly und das script auch.
Die Logs (suexec und error_log) sagen nichts.

Ich habe wirklich keine Ahnung mehr und suche seit Stunden.
Vielleicht hat jemand eine Idee? :?

Auf meinem 'alten' Server S+P läuft es und ich habe alles verglichen.
PS: Ich habe das ganze Forum auf den Kopf gestellt und nichts gefunden, was hilft.

Gruß
Frank
darkspirit
Posts: 553
Joined: 2002-10-05 16:39
Location: D'dorf
Contact:
 

Re: Kein copy mit PHP möglich (upload)

Post by darkspirit »

Ich denke, dafür muss der Ordner, wo das File rein soll, dem Apache-User gehören. Dann reicht IMHO auch ein 750 aus ;)
zakmc
Posts: 22
Joined: 2003-03-04 22:30
 

Re: Kein copy mit PHP möglich (upload)

Post by zakmc »

versuche es mal hiermit

passthru("chmod 0644 /home/www/web1/html/dir1/uploaddir/xyz.gif" ,$wert);
frankp
Posts: 6
Joined: 2003-09-22 11:52
Contact:
 

Re: Kein copy mit PHP möglich (upload)

Post by frankp »

@zakmc: mit passthru bekomme ich genau den gleichen fehler wie mit chmod

@DarkSpirit: ich habe den Owner des PHP-scripts umgesetzt.
"chown wwwrun:www upload.php"

Nun bekomme ich den Fehler "Warning: SAFE MODE Restriction in effect. The script whose uid is 30 is not allowed to access <DIRxyz> owned by uid 636 in /home/www/web1/html/dir1/upload.php on line 49"

Der Savemode ist allerdings überall auf Off (confixx und httpd.conf) !?
darkspirit
Posts: 553
Joined: 2002-10-05 16:39
Location: D'dorf
Contact:
 

Re: Kein copy mit PHP möglich (upload)

Post by darkspirit »

Naja, anscheinend ist der Safe-Mode nicht off, sonst käme keine Warnung.. ;) Was sagt denn die php.ini dazu?

In der Fehlermeldung steht eigentlich alles drin.. das war wohl nicht der richtige User.. uid 30 ist wohl dein Apache-User und 636 irgendein anderer Account.. prüf das nochmal nach.
frankp
Posts: 6
Joined: 2003-09-22 11:52
Contact:
 

Re: Kein copy mit PHP möglich (upload)

Post by frankp »

wenn ich auch dem Verzeichnis (wie du es geschrieben hast) den Owner wwwrun:www verpasse, dann geht es, hilft aber nicht, da ich per Script mit dem User web1:fptonly nicht diese Rechte setzen kann.

Das Script funktioniert so, dass es ein Upload-Verzeichnis anlegt und dann Dateien vom User reingeladen werden können.

Also legt der User web1 das Verzeichnis an und sollte dann doch auch die Dateien schreiben dürfen, oder?
Mache ich da einen Denkfehler?


In der php.ini steht übrigens:
; Safe Mode
;
safe_mode = Off
frankp
Posts: 6
Joined: 2003-09-22 11:52
Contact:
 

Re: Kein copy mit PHP möglich (upload)

Post by frankp »

Hab es endlich gefunden *seufz*
Es war doch 'nur' ein makedir Problem

Falls auch mal jemand das gleiche Prob hat, schreibe ich mal die Lösung, aber vielleicht bin auch nur ich so hohl. :wink:

Das Directory für die Upload-Dateien wurde mit PHP angelegt:
mkdir ("/path/to/my/dir", 0777);

Leider hat die Funktion aber trotzdem immer nur die Rechte 755 vergeben, da die aktuelle umask genommen wird. (bei mir Oktal 22)
Das wird halt ausmaskiert und 0755 kommt raus.

Folgender Code bringt dann doch das gewünschte Ergebnis:
$old_umask = umask(0); // umask auf 0 setzen, alte merken
mkdir ("/path/to/my/dir", 0777); // dir nun wirklich mit rechten 777 generieren
umask($old_umask); // alte umask wieder zurückholen

Das Directory, welches mit web1:ftponly angelegt wurde, kann mit jedem beliebigen PHP-Script Uploads machen. (und benötigt keinen apache-User)

Wer lesen kann ist eindeutig im Vorteil ! *schäm*
http://de2.php.net/manual/en/function.mkdir.php

Trotzdem vielen Dank für eure Hilfe !!!

Gruß
Frank
Post Reply