Ich habe Web-Anwendung in PHP mit Apache-Server, Linux. Aus Sicherheitsgründen behalte ich die Dokumente und Bilder außerhalb des Internets. Wie kann ich diese Bilder anzeigen, wenn der Benutzer sich anmeldet?Wie kann ich die Bilder außerhalb des Web-Stammverzeichnisses in meiner PHP-Anwendung anzeigen?
Antwort
PHP standardmäßig kann bereits auf Dateien außerhalb des Webstamms zugreifen, sofern nicht mit einer Direktive open_basedir
eingeschränkt (oder abgesicherten Modus, aber ich hoffe, Sie sind nicht in diesem Käfig).
Es ist normalerweise eine gute Übung, innerhalb einer VirtualHost-Konfiguration eine open_basedir
Einschränkung einzufügen. Sie können mehrere Verzeichnisse angeben, die durch :
unter Linux und ;
unter Windows getrennt sind.
Um auf diese Dateien zuzugreifen, verwenden Sie entweder einen absoluten Pfad oder einen Pfad relativ zur Position der aufgerufenen PHP-Datei. (Sie müssen also ../
erreichen, um die oben genannten Ebenen zu erreichen).
Vergewissern Sie sich auch, dass die Verzeichnisse, in die Sie schreiben möchten, dem Webserver-Benutzer zugewiesen sind und Schreibrechte haben.
Ansonsten haben Sie zweite Option:
In Ihrem www-Verzeichnis, eine "image.php" Datei erstellen, mit einem ähnlichen Inhalt:
<?php
header('Content-Type: image/png');
readfile("../img/" . $_GET['img']);
?>
Und rufen Sie Ihre Bilder mit
<img src="image.php?img=myimage.png" />
Bitte beachten Sie, dass Ihre PHP-Datei sollte nicht so einfach sein :) Da Sie möglicherweise mehrere Bildformate (und Prov Iding die richtigen Header für sie), die Überprüfung auf schädlichen Dateipfad/Einschlüsse (Sie wollen nicht _GET $ verwenden, ohne die Validierung/die Eingabebereinigung), Extra-Caching etc. etc. etc.
Aber das sollten Sie eine Idee, wie Sie Ihr Problem ansprechen können.
So einfach wie das, dieser Wille Ausgang das Bild mit der richtigen Header,
daran erinnern, dass Sie den Header gesetzt haben(), bevor irgendetwas aus dem Ausgabepuffer
=> kein Echo oder drucken Spülung vor
$file = '../../somedirectory/image.jpg‘; header('Content-Type:image/jpeg‘); header('Content-Length: '.filesize($file)); echo file_get_contents($file);
verwenden, um die ob_clean() Funktion von pHP vor dem Readfile()
es usefull Raum zu vermeiden, wie Probleme
- 1. Bilder anzeigen von außerhalb von ASP.NET-Anwendung
- 2. Wie kann ich die Fehler meiner Anwendung in JSF anzeigen?
- 3. Warum kann Django keine Bilder in meiner CSS-Datei anzeigen?
- 4. Listenindex außerhalb des Bereichs in meiner Codierung
- 5. Wie kann ich die Build-Nummer und/oder DateTime des letzten Builds in meiner App anzeigen?
- 6. Wie kann ich ein Bildfeld in meiner RentListAPIView anzeigen?
- 7. Werte außerhalb des Tortendiagramms in chartjs anzeigen
- 8. Wie viele Bilder kann ich in meiner iPhone App zwischenspeichern?
- 9. Tooltip außerhalb des aktuellen Fensters anzeigen
- 10. Wie kann ich PDF-Dateien in meiner ASP.net-Webanwendung anzeigen?
- 11. Bilder von außerhalb des Dokumentenstamms bereitstellen
- 12. Ich kann keine Bilder auf RecyclerView anzeigen
- 13. Anzeigen von Bildern außerhalb des Java-Anwendungskontextes.
- 14. Wie füge ich Bilder über die Navigationsleiste des UINavigationControllers hinzu?
- 15. Kann ich Bilder von Google-Ergebnissen auf meiner Website verwenden?
- 16. kann Bilder in CakePHP-Layout nicht anzeigen
- 17. Bilder in SSMS anzeigen?
- 18. Wie verwende ich UINavigationController außerhalb des AppDelegate?
- 19. Wie kann ich die Anzahl der Bilder anzeigen, die einem Beitrag auf der Bildanhangsseite angehängt sind?
- 20. Wie kann ich ein Bild stoppen außerhalb des div Anzeige
- 21. Bilder in jsp anzeigen
- 22. Wie kann ich Google-Anzeigen auf meiner Website testen?
- 23. Kann Bilder in HTML-Komponente nicht anzeigen
- 24. Kann Bilder in einer Tabellenansicht nicht anzeigen
- 25. Wie kann ich die Online-Benutzer meiner Website kennen?
- 26. C# Kann ich Bilder in einem Listenfeld anzeigen?
- 27. Was kann ich mit Plist-Dateien außerhalb meiner App tun?
- 28. Wie kann ich Bilder von einem beliebigen Ordner in Xamarin Forms auf Windows 8 anzeigen
- 29. Wie kann ich die Ausgabe eines Opscode Chef Bash-Befehls in meiner Konsole anzeigen?
- 30. Wie kann ich didRegisterForRemoteNotificationsWithDeviceToken außerhalb des App-Delegaten zu hören
[kommt mir bekannt vor.] (https://stackoverflow.com/ Fragen/13357994/Zugriff-eine-Datei-welche-ist-befindet-vor-außerhalb-des-Server-Root-Verzeichnisses # Antwort-13358201) – showdev
Es ist möglich, aber es ist nicht die gleiche Antwort. – Legionar