suchen
Heim类库下载PHP类库Lösung des Problems, dass die PHP-Funktion move_uploaded_file Bilder nicht verschieben konnte

Beschreibung des Problems:
Heute ist bei der Implementierung eines PHP-Skripts, das Avatar-Bilddateien hochlädt, wenn Benutzer sich registrieren, ein Problem aufgetreten: Das PHP-Skript wurde zuvor ermittelt

Die auf der Browserseite hochgeladene Datei habe mich nicht geirrt.
Die hochgeladene Datei ist legal.
Die hochgeladene Datei ist eine Bilddatei.
Auf der Serverseite wurden eindeutige Dateinamen generiert.
Code
Als nächstes sollten wir die Datei vom temporären Speicherort an den festen Speicherort verschieben, also habe ich das folgende Skript geschrieben:

//Verschiebe die Datei vom temporären Speicherort an den fester Speicherort @move_uploaded_file($_FILES[$image_fieldname]['tmp_name'], $upload_filename) oder handle_error("Fehler beim Speichern der Bilddatei", "Fehler beim Verschieben der Datei" . "{$upload_filename}");
Code handle_error( ) Funktion Es handelt sich um eine von mir definierte Fehlerbehandlungsfunktion. Wenn die Funktion move_uploaded_file einen Fehler ausführt, springt sie zur Fehlerseite. Wenn ich das obige Skript ausführe, springt das Skript offensichtlich zur Fehlerseite . Zuerst habe ich überprüft, ob in meinen Funktionsparametern ein Fehler vorliegt:

$_FILES[$image_fieldname]['tmp_name']$upload_filename //Es ist der Dateipfad, den ich selbst kombiniert habe, garantiert korrekt
Laut PHP-Handbuch sind die beiden oben genannten Parameter garantiert in Ordnung. Auf der Seite werden keine Fehler gemeldet (ich habe den PHP-Operator „@“ vor der Funktion verwendet. (damit die Seite keine Fehler meldet)

@-Operator

Hinweis: Verwenden Sie den @-Operator von PHP in Ihrem Code mit Vorsicht. Der
@-Operator kann alle Probleme aussortieren, die durch Ungültigkeit entstehen können Benutzereingaben oder SQL-Abfragen, die eine falsche Spalte oder sogar einen nicht standardmäßigen URL-Fehler enthalten, können vermieden werden. Der Code prüft möglicherweise nicht einmal auf Fehler, die vom Benutzer, selbst oder dem Entwickler generiert wurden. Kurz gesagt, der @-Operator kann die Fehlermeldung maskieren des Codes verwendet eine beliebte Website oft @, weil sie einfach nicht abstürzen oder stoppen kann, aber in diesem Fall sollten andere Fehlerlösungen verwendet werden.

Suche nach der Fehlerprotokolldatei
Zu diesem Zeitpunkt war mir nicht klar, dass der @-Operator die Fehlermeldung blockierte. Ich wollte nach der Fehlerprotokolldatei von Apache suchen, weil ich ein PHP erstellte Entwicklungsumgebung. Ich habe ein Entwicklungskit wie xampp verwendet, daher unterschied sich die Datei error_log von den meisten Artikeln im Internet. Am Ende habe ich sie in
(mein Host ist Ubuntu)

/ gefunden. opt/lampp/logs
Die Datei „php_error_log“ wurde in diesem Pfad gefunden. In der Datei „php_error_log“ wurde schließlich auch der Fehler gefunden Ort, an dem der Fehler aufgetreten ist: Das Zielverzeichnis, in dem wir die Bilder speichern, hat keine Berechtigungen. Der Benutzer, der das PHP-Skript ausführt, und der Benutzer, der den Skriptcode schreibt und den Bildordner erstellt, sind nicht derselbe Benutzer 🎜>

Tatsächlich müssen wir uns nicht so viel Mühe geben. Wir müssen nur den @-Operator entfernen und dann die Fehlerbehandlungsfunktion handle_error() entfernen, und dann können wir die Fehlermeldung sehen die Webseite.

Ändern Sie die Berechtigungen des Zielordners

Egal was passiert, wir haben immer noch die Ursache des Problems gefunden, was sehr erfreulich ist. Da der Benutzer und die Berechtigungen des Ordners falsch sind, können wir nur Sie müssen diese ändern. Fragen Sie einfach:

Ändern Sie den Benutzer, der den festen Speicherordner für Bilder besitzt, und ändern Sie ihn in den Benutzer, der Apache ausführt, um PHP-Skripte auszuführen.

Ändern Sie die Berechtigungen des Ordners auf 755
Wer ist also der Benutzer, der Apache ausführt? Wir verwenden ein PHP-Skript, um Folgendes zu erhalten:

echo exec('whoami'); //Holen Sie sich die Berechtigung für Führen Sie die Datei „Benutzername“ aus und ändern Sie dadurch die Berechtigungen des Bildordners.

Auf diese Weise habe ich den Benutzer erhalten, der das Skript ausgeführt hat: Daemon. Was Sie erhalten, unterscheidet sich wahrscheinlich von meinem.
Ändern wir den Benutzer, dem der Ordner gehört:

chown daemon -R ~/web/hello_php/uploads

~/web/hello_php/uploads ist der Zielpfad, in dem ich die Bilder speichere, - R Stellt die rekursive Änderung des Benutzers dar, der zu dem Ordner in diesem Verzeichnis gehört.

Dann ändern Sie die Ordnerberechtigungen

chmod 775 -R ~/web/hello_php/uploads

Somit sind wir fertig,

Referenz Lesen Sie: http://www.manongjc.com/article/1494.html


Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.