Directory /var/www/html/mysite/tmp_file_upload/>
Options -Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /var/www/html/mysite/images/>
Options -Indexes
</Directory>
CentOS-Verzeichnisberechtigungen:
drwxrwxr-x 2 root root 4096 Nov 11 10:01 images
drwxr-xr-x 2 root root 4096 Nov 12 04:54 tmp_file_upload
Egal was ich tue, ich erhalte immer diesen Fehler von PHP, wenn ich die Datei hochlade:
Warnung: move_uploaded_file(images/robot.jpg): Fehler beim Öffnen des Streams: Permission denied in /var/www/html/mysite/process.php on line 78
Warnung: move_uploaded_file(): „/tmp/phpsKD2Qm“ kann nicht nach „images/robot.jpg“ in /var/www/html/mysite/process.php in Zeile 78 verschoben werden
Wie Sie sehen können, hat es nie die Konfiguration aus der php.ini-Datei in Bezug auf die Upload-Datei übernommen.
Was mache ich hier falsch?
775? Vielleicht läuft Ihr Server als Nobody. Nur root kann in diesem Fall schreiben (Ihre “Bilder”-Berechtigungen) …
– Konrad Borowski
12. November 2011 um 10:34 Uhr
was bedeutet das ? wie kann ich es ändern?
– Benutzer63898
12. November 2011 um 11:16 Uhr
Denken Sie daran, dass ALLE übergeordneten Verzeichnisse auch die richtigen Berechtigungen haben müssen.
– Sridhar Sarnobat
19. September 2017 um 17:56 Uhr
Laith Shadeed
Das ist weil images und tmp_file_upload sind nur beschreibbar root Benutzer. Damit das Hochladen funktioniert, müssen wir den Besitzer dieser Ordner mit dem Besitzer des httpd-Prozesses identisch machen ODER sie global beschreibbar machen (schlechte Praxis).
Überprüfen Sie den Eigentümer des Apache-Prozesses: $ps aux | grep httpd. Die erste Spalte ist normalerweise der Eigentümer nobody
Ändern Sie den Eigentümer von images und tmp_file_upload zu werden nobody oder was auch immer der Besitzer ist, den Sie in Schritt 1 gefunden haben.
Chmod images und tmp_file_upload jetzt vom Eigentümer beschreibbar sein, falls erforderlich [Seems you already have this in place]. Erwähnt in der Antwort von @Dmitry Teplyakov.
Danke: unser alter Besitzer war Daemon, jetzt ist es Apache
– Zapper
18. Juni 2013 um 14:48 Uhr
Dieser Fix gilt für Situationen, in denen Sie möglicherweise den PHP-Typ des Servers von fast_CGI, CGI in Apache_mod geändert haben, da Plesk usw. mit den Berechtigungen des ursprünglichen Benutzers und nicht mit Apache fortfahren kann. Dies hat meine Probleme behoben.
– Elliotrock
16. Oktober 2014 um 4:31 Uhr
Ich habe denselben Fehler, aber sowohl der Prozess als auch die Ordner gehören jacob (ich, da es mein lokaler Rechner ist) und die Ordner haben alle 755 oder 775.
– Limette und Kokosnuss
8. Februar 2015 um 19:00 Uhr
Ich musste meinen Apache-Prozess neu starten sudo service httpd restart nach Änderung der Berechtigungen. Dann hat es geklappt 🙂 Anstatt den Besitzer zu wechseln chown Ich habe meinen Apache-Prozess zu einer „www“-Gruppe hinzugefügt und diese Verzeichnisse derselben „www“-Gruppe hinzugefügt chgrp
– Ali Said
9. April 2015 um 15:27 Uhr
twlkyao
Sie können auch dieses Skript ausführen, um den Besitzer des Apache-Prozesses herauszufinden:
<?php echo exec('whoami'); ?>
Und ändern Sie dann den Eigentümer des Zielverzeichnisses in das, was Sie haben. Verwenden Sie den Befehl:
chown user destination_dir
Und dann den Befehl verwenden
chmod 755 destination_dir
um die Berechtigung für das Zielverzeichnis zu ändern.
Danke es funktioniert für mich. Ich habe zuerst die Methode von Laith Shadeed verwendet, aber ich bekomme beim Tippen nicht das gleiche Ergebnis ps aux | grep httpd und <?php echo exec('whoami'); ?>. Weiß jemand warum?
– Kukinsula
17. Juni 2014 um 16:17 Uhr
ps aux | grep https gibt den Besitzernamen des Webservers nicht zurück. Das macht : ps aux | grep -E ‘[a]pache|[h]ttpd|[_]www|[w]ww-Daten|[n]ginx’ | grep -v root | Kopf -1 | Schnitt -d\ -f1 Von Symfony doc.
– David Jaquel
22. Juli 2014 um 10:54 Uhr
Beachten Sie, dass im obigen Befehl zwei Leerzeichen zwischen “-d\” und “-f1” stehen sollten. Wenn Sie unverändert kopieren und einfügen, erhalten Sie möglicherweise eine Fehlermeldung wie „cut: bad delimiter“.
– Beejor
5. April 2015 um 0:07 Uhr
plus 1 für exec('whoami'). Hat mir weitere 30 Minuten gespart. war chowning Ubuntu-Benutzer
hat mein Leben gerettet 🙂 .. Ich benutze GIT post-recive Hook, um mein Web bereitzustellen, und jedes Mal, wenn ich bereitstelle, erhalte ich seinen Fehler „Erlaubnis verweigert“, das Hinzufügen eines Git-Benutzers zu www-data hat es behoben 🙂 Danke
– Zalaboza
8. August 2017 um 7:49 Uhr
Dies ist die beste Antwort.
– Retter123
8. November 2017 um 16:19 Uhr
Mach dir keine Sorge! Ihre Antwort ist die beste in unseren Herzen. Du hast gerade mein Leben gerettet und ich weiß nicht, wie ich dir danken soll!!!!
– Abdulaziz Al Jumaia
16. Juli 2021 um 14:09 Uhr
hawkar ITstudent
Wenn Sie Mac OS X haben, gehen Sie zum Dateistamm oder zum Ordner Ihrer Website.
Dann mit der rechten Maustaste darauf klicken, Informationen abrufen, ganz nach unten gehen (Freigabe & Berechtigungen), öffnen Sie das, ändern Sie alle schreibgeschützten in lesen und schreiben. Achten Sie darauf, das Vorhängeschloss zu öffnen, gehen Sie zum Einstellungssymbol und wählen Sie Anwenden zu den beiliegenden Artikeln…
Chris
Ich wollte dies zu den vorherigen Vorschlägen hinzufügen. Wenn Sie eine Version von Linux verwenden, die SELinux aktiviert, dann sollten Sie dies auch in einer Shell ausführen:
mag sehr gut stimmen, aber ich war davon ausgegangen, dass chcon “changed context”, dh es wurde einfach geändert. Was Sie sich ansehen, verwendet zuerst “semanage fcontext”, wodurch es in eine Einstellungsdatei “file_contexts.local” eingefügt wird, es ändert jedoch nie den Kontext.
– Chris
6. September 2017 um 12:41 Uhr
@Chris, danke Mann. Dies löste mein Problem. Würden Sie bitte etwas Licht in die Sache bringen? Was macht dieser Befehl eigentlich? Ich habe die Manpages und sogar die Informationen für chcon durchgesehen und den Wert des von Ihnen eingegebenen Typs nicht gefunden. Ich bin hier etwas verwirrt.
mag sehr gut stimmen, aber ich war davon ausgegangen, dass chcon “changed context”, dh es wurde einfach geändert. Was Sie sich ansehen, verwendet zuerst “semanage fcontext”, wodurch es in eine Einstellungsdatei “file_contexts.local” eingefügt wird, es ändert jedoch nie den Kontext.
– Chris
6. September 2017 um 12:41 Uhr
@Chris, danke Mann. Dies löste mein Problem. Würden Sie bitte etwas Licht in die Sache bringen? Was macht dieser Befehl eigentlich? Ich habe die Manpages und sogar die Informationen für chcon durchgesehen und den Wert des von Ihnen eingegebenen Typs nicht gefunden. Ich bin hier etwas verwirrt.
775? Vielleicht läuft Ihr Server als Nobody. Nur root kann in diesem Fall schreiben (Ihre “Bilder”-Berechtigungen) …
– Konrad Borowski
12. November 2011 um 10:34 Uhr
was bedeutet das ? wie kann ich es ändern?
– Benutzer63898
12. November 2011 um 11:16 Uhr
Denken Sie daran, dass ALLE übergeordneten Verzeichnisse auch die richtigen Berechtigungen haben müssen.
– Sridhar Sarnobat
19. September 2017 um 17:56 Uhr