Bilder upload Chmod Rechteproblem

Basti_2015

Mitglied
Hallo, ich habe ein Script womit ich Bilder uploaden möchte.

Wenn ich die Rechte des betreffenden Ordner auf 0777 setze funktioniert es, aber ich würde diese gern auf 755 belassen.
PHP:
$dirpath = realpath(dirname(getcwd()));
    #echo $_SERVER['DOCUMENT_ROOT'].'<br>';
    $imgUploader->setDestination($dirpath .'/img/sid/');

Code:
Warning: move_uploaded_file(/www/htdocs/user/ordner/ordner/public_html/img/sid/1459233244.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in/www/htdocs/user/ordner/ordner/classes/IMGupload.class.phpon line 55

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/phpb4tDdJ' to '/www/htdocs/user/ordner/ordner/public_html/img/sid/1459233244.jpg' in/www/htdocs/user/ordner/ordner/classes/IMGupload.class.phpon line 55

Ich vermute, dass es an den Besitzrechten vom Script und dem Ordner, welcher per FTP erstellt wurde, liegen könnte.

Ich habe auch versucht per mkdir einen Ordner zu erstellen. Jedoch schlägt dies auf fehl.

Code:
mkdir($_SERVER['DOCUMENT_ROOT'].'/test1/test2', 0700, true);

Warning: mkdir() expects parameter 2 to be long, string given in/www/htdocs/user/ordner/ordner/public_html/cf4/test.php on line 2

Oder anders:
Code:
mkdir($_SERVER['DOCUMENT_ROOT'].'/test1/test2');

Warning: mkdir() function.mkdir: No such file or directory in/www/htdocs/user/ordner/ordner/public_html/cf4/test.php on line 2

Leider komme ich nicht mehr weiter.

Zumal die mkdir Funktion aus dem php Manuel kommt, woher dann diese Fehlermeldungen :/
 
Zuletzt bearbeitet:
Hi

Welche Besitzer (Nutzer+Gruppe) hat der Ordner, und welche der Apache-Prozess?
Bzw. wie weit hast du Zugriff? Nur FTP? SSH?

Zum ersten mkdir: Bist du dir sicher, dass Code und Fehlermeldung zusammenpassen?

Zum zweiten mkdir: Gibt es test1 schon?
 
Hallo
Hi

Welche Besitzer (Nutzer+Gruppe) hat der Ordner, und welche der Apache-Prozess?

Was genau meinst du damit? Chmod? Wie kann ich das prüfen?

Es ist ein normaler Webserver.

Zum ersten mkdir: Bist du dir sicher, dass Code und Fehlermeldung zusammenpassen?

Zum zweiten mkdir: Gibt es test1 schon?
Ja, da er ja nichts erstellt :)

Nein, test1 gibt es nicht. Wird auch mit
if (!file_exists($directoryPath)) geprüft.

Habe es mal mit nur einen Ordner v ersucht.

Mit nur einem Ordner kommt wieder eine Benutzerrechtefehlermeldung

PHP:
Warning: mkdir() [function.mkdir]: Permission denied in/www/htdocs/user/ordner/ordner/public_html/cf4/test.php on line 2

mkdir($_SERVER['DOCUMENT_ROOT'].'/test1/');
 
Zuletzt bearbeitet von einem Moderator:
Wie kann ich das prüfen?
Für den Ordner: Im Ordner darüber "ls -al" ausführen und die Zeile für den benötigten Ordner anschauen (wenn du dir nicht sicher bist, was was ist, einfach die ganze Zeile posten). Für den Prozess: "ps aux | grep apache" und die ganze Ausgabe herzeigen.
Ja, da er ja nichts erstellt :)
Schon, aber 0777 ist kein String in PHP. Das wundert mich dabei.
Nein, test1 gibt es nicht. Wird auch mit
if (!file_exists($directoryPath)) geprüft.
mkdir in PHP erstellt immer nur "einen" Ordner gleichzeitig. Für ein komplett neues test1/test2 müsste man zuerst ein mkdir für test1 allein und dann eins für test1/test2 machen (oder den recursive-Parameter auf true setzen).
 
Danke,

Ich glaube, dass ich dafür eine console benötige, und diese meines Wissens nur auf eigenen Servern (Vserver)zur Verfügung steht. Ich habe jedoch nur Webspace und wüsste jetzt nicht, wo ich diese Befehle ausführen könnte. Habe keine Shell.

Die Besitzer und Gruppenrecht, sind laut FTP (chawn) die gleichen. Die Datei hat hat eine Chmod Berechtigung von Standard 644.
 
Ich könnte meinen Support fix anschreiben, hast du einen Tipp, nach was genau ich fragen soll. Damit die Kollegen gleich wissen, was ich von Ihnen möchte ;)
 
Kannst du den Besitzer der Dateien per FTP ändern? (je nach Hoster unterschiedlich)
Dann müsste man nur wissen, als welcher User (und Gruppe) Apache läuft.
 
Hallo Sheel, hier noch die Antwort meines Supportes:

> Ordner werden ohne CGI als Nutzer "www-data" angelegt. Dies gelingt dem
> PHP-Script nur dann, wenn der übergeordnete Ordner den CHMOD 777 (FTP-USER)
> hat oder ebenfalls durch den WWW-DATA angelegt wurde.
>
> Sie können für die jeweilige Domain den CGI-Modus aktivieren. Dadurch werden
> PHP-Script als FTP-User ausgeführt. Die Berechtigungsprobleme entfallen damit.


Dann werde ich es jetzt mal so probieren.

Danke für deine Hilfe. Wenn es klappt, werde ich mich nochmal melden :D
 
Zurück