
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?

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

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.

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(/.*)?'

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

Dmitri Tepljakow
Ändern Sie die Berechtigungen für diesen Ordner
# chmod -R 0755 /var/www/html/mysite/images/

Bahnwart.6
Versuche dies:
-
Öffnen Sie /etc/apache2/envvars
sudo gedit /etc/apache2/envvars
-
ersetzen www-data
mit Ihrem your_username
"export APACHE_RUN_USER=www-data"
ersetzen mit
export APACHE_RUN_USER='your_username'
9867700cookie-checkmove_uploaded_file gibt den Fehler „Fehler beim Öffnen des Streams: Berechtigung verweigert“ ausyes
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