Backslash in PHP-Datei Upload
-
21-12-2019 - |
Frage
ein kleiner hintergrund:
Ich habe unsere kirchliche Website über den gemeinsam genutzten Windows-Hosting-Plan von Godaddy. Während ich Windows hasse und die Site auf einen Linux-basierten Server verschieben würde, ist dies nicht mein Hosting-Konto, also kann ich das nicht tun. Ich versuche derzeit, eine GUI zum Hochladen von Predigten auf die Website umzusetzen. Ich weiß, wie Sie dies auf einem Linux-Server tun sollen, also dachte ich, dass der Windows-Code ähnlich wäre. Der einen Ort, an dem ich stecken bin, ist der Upload-Pfad. Der absolute Pfad auf unserem Godaddy-Server ist
generasacodicetagpre.Das Backslash entgeht jedoch Sonderzeichen, sodass ich dachte, ich brauchte zwei.
generasacodicetagpre.
Ich habe dann den Upload getestet, aber ich erhalte diesen Fehler:
Die folgende Nachricht der Systemebene wurde empfangen: Berechtigungen oder zugehörige Fehler-Verschieben von Dateien an
Es scheint, dass der PHP alle Backslashes außer \ 54 und \ 201 beseitigt. Laut diese Site , \ 54 ist ein Komma und \ 201 ist ungenutzt (oder leer). Dies erklärt, warum ich das Komma bekomme und die 2014 im Jahr 2014 verschwindet. Es erklärt jedoch nicht, warum der doppelte Backslash nicht nur ein einzelner Backslash wird. Hier ist das PHP-Skript, das das Bild hochladen soll:
generasacodicetagpre.Hier ist die App_config.php, die host_www_root definiert:
generasacodicetagpre.
Ich habe die folgenden Saiten ausprobiert:
Vier Backslashes (wie in Regex):
generasacodicetagpre.einzelner Backslash innerhalb einzelner Zitate:
generasacodicetagpre. Verwenden von \
, der HTML-Zeichencode für ein Backslash ist:
mit \134
, der die Oktalsequenz für einen Backslash
Verwenden von Vorwärtsschrägungen als Diese Frage sagte:
generasacodicetagpre.Verwenden von Directory_Separator als MACHEVITY vorgeschlagen:
generasacodicetagpre.und natürlich der doppelte Backslash
generasacodicetagpre.Ich habe diese Änderungen an allen Strings vorgenommen, die an der Erstellung des Upload-Pfads beteiligt sind. Ich habe nur die Definition von host_www_root aufgenommen, um Platz zu sparen.
Wie Sirnarsh mich erinnerte, wenn ich den Pfad erinnere, erscheint ich, erscheint es mit den Backslashes einfach gut. Es ist jedoch, wenn ich den Pfad zur Move_UPLADED_FILE-Funktion bestehe, dass etwas Haywire geht.
Lösung 2
ok, ich habe es herausgefunden, und jetzt fühle ich dumm.Ich endete mit Vorwärtsschnitten.Der Grund, warum dies nicht früher funktioniert, ist, dass die Berechtigungen (die ich dachte, ich dachte, ich dachte) nicht eingestellt sei, um mich schreiben zu lassen.Also, für alle anderen mit diesem Problem:
- .
- Vorwärtsschrägungen verwenden
- Überprüfen Sie Ihre Berechtigungen (und doppelt und dreifach prüfen)
Andere Tipps
Sie sollten stripslashes () zum Lesen von Daten verwenden
verwenden