move_uploaded_file gibt den Fehler „Fehler beim Öffnen des Streams: Berechtigung verweigert“ aus

Lesezeit: 7 Minuten

move uploaded file gibt den Fehler „Fehler beim Offnen des Streams Berechtigung
Benutzer63898

Ich bekomme diesen Fehler immer wieder, wenn ich versuche, das Upload-Verzeichnis mit Apache 2.2 und PHP 5.3 auf CentOS zu konfigurieren.

In der php.ini:

upload_tmp_dir = /var/www/html/mysite/tmp_file_upload/

In httpd.conf:

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

move uploaded file gibt den Fehler „Fehler beim Offnen des Streams Berechtigung
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).

  1. Überprüfen Sie den Eigentümer des Apache-Prozesses: $ps aux | grep httpd. Die erste Spalte ist normalerweise der Eigentümer nobody
  2. Ä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.

    $sudo chown nobody /var/www/html/mysite/images/
    
    $sudo chown nobody /var/www/html/mysite/tmp_file_upload/
    
  3. 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.

    $ sudo chmod -R 0755 /var/www/html/mysite/images/
    
    $ sudo chmod -R 0755 /var/www/html/mysite/tmp_file_upload/
    
  4. Weitere Einzelheiten zu diesem Verhalten finden Sie im Handbuch http://php.net/manual/en/ini.core.php#ini.upload-tmp-dir beachten Sie, dass es auch darüber spricht open_basedir Richtlinie.

  • 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


1646895850 540 move uploaded file gibt den Fehler „Fehler beim Offnen des Streams Berechtigung
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

    – Entw

    14. April 2015 um 17:45 Uhr

  • sollte das sein www-data? meistens

    – Maxime

    27. April 2015 um 15:45 Uhr


1646895850 861 move uploaded file gibt den Fehler „Fehler beim Offnen des Streams Berechtigung
Junius L.

Das hat bei mir funktioniert.

sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www

Dann abmelden oder neu starten.

Wenn SELinux beschwert, versuchen Sie Folgendes

sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www(/.*)?'
sudo restorecon -Rv '/var/www(/.*)?'

  • 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

1646895851 606 move uploaded file gibt den Fehler „Fehler beim Offnen des Streams Berechtigung
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…

1646895851 287 move uploaded file gibt den Fehler „Fehler beim Offnen des Streams Berechtigung
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:

chcon -R --type httpd_sys_rw_content_t /path/to/your/directory

Zusammen mit dem Erteilen von Benutzerberechtigungen für Ihren Webserver entweder durch Gruppen oder durch Ändern des Eigentümers des Verzeichnisses.

  • restorecon -R -v /path/to/your/directory muss danach wohl auch noch mit einbezogen werden. access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…

    – Absoluter Nullpunkt

    9. Juli 2017 um 23:08 Uhr

  • 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.

    – Joker

    9. Juni 2019 um 16:45 Uhr

  • es macht das verzeichnis oder die dateien für den webserver (httpd) lesbar … ich will und könnte selinux ehrlich gesagt nicht erklären, da ich selbst kaum verständnis dafür habe … bitte sehen nsa.gov/what-we-do/research/selinux/documentation und access.redhat.com/documentation/en-us/red_hat_enterprise_linux/…

    – Chris

    17. Juni 2019 um 9:25 Uhr


move uploaded file gibt den Fehler „Fehler beim Offnen des Streams Berechtigung
Dmitri Tepljakow

Ändern Sie die Berechtigungen für diesen Ordner

# chmod -R 0755 /var/www/html/mysite/images/

  • restorecon -R -v /path/to/your/directory muss danach wohl auch noch mit einbezogen werden. access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…

    – Absoluter Nullpunkt

    9. Juli 2017 um 23:08 Uhr

  • 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.

    – Joker

    9. Juni 2019 um 16:45 Uhr

  • es macht das verzeichnis oder die dateien für den webserver (httpd) lesbar … ich will und könnte selinux ehrlich gesagt nicht erklären, da ich selbst kaum verständnis dafür habe … bitte sehen nsa.gov/what-we-do/research/selinux/documentation und access.redhat.com/documentation/en-us/red_hat_enterprise_linux/…

    – Chris

    17. Juni 2019 um 9:25 Uhr


1646895852 147 move uploaded file gibt den Fehler „Fehler beim Offnen des Streams Berechtigung
Bahnwart.6

Versuche dies:

  1. Öffnen Sie /etc/apache2/envvars

    sudo gedit /etc/apache2/envvars
    
  2. ersetzen www-data mit Ihrem your_username

    "export APACHE_RUN_USER=www-data" 
    

    ersetzen mit

    export APACHE_RUN_USER='your_username' 
    

  • Und Apache neu starten ($ sudo service apache2 restart), um Effekte zu sehen <?php echo exec('whoami'); ?>

    – Xopi Garcia

    12. August 2021 um 13:40 Uhr

986770cookie-checkmove_uploaded_file gibt den Fehler „Fehler beim Öffnen des Streams: Berechtigung verweigert“ aus

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy