Zugriff auf entfernte Dateien (allow_url_fopen)
Matthias
- php
Hallo miteinander!
Ich bastle gerade an einem Online-Update für eines meiner PHP-Skripte. Dieses soll automatisch die neuste Filelist vom Server holen und dann die Dateien lokal installieren.
Natürlich ist es dazu nötig, auf entfernte Dateien (in diesem Fall HTTP) zugreifen zu können.
Im jetzigen Stand mache ich das ganz einfach mit fopen, allerdings wird das ja ziemlich sicher zu Problemen auf diversen Server führen, die das nicht aktiviert haben. Problem ist, dass das Script auf so gut wie allen Serverkonfigurationen lauffähig sein muss.
Nun stellt sich die Frage, wie dieses Problem umgangen werden kann. Gibt es eine Möglichkeit auf entfernte Dateien zuzugreifen ganz unabhängig von Serverkonfiguration und installierten Komponenten (z.B. PEAR-Komponente)?
Zweite Möglichkeit wäre ja auch das Überschreiben der php.ini durch Mitliefern einer eigenen php.ini, welche dann im Skriptverzeichnis abgelegt wird. Frage hier ist jedoch, ob dies auf allen Servern erlaubt ist. Habe das mal bei Strato oder so probiert und lief ohne Probleme, den Safe-Mode abzuschalten.
Welche Möglichkeiten habe ich nun also um zu gewährleisten, dass ein Zugriff auf externe Dateien auf jeden Fall möglich ist?
Würde mich freuen, wenn ihr mir hier weiterhelfen könntet. Danke schonmal!
Schöne Grüße,
Matthias
Hi,
Welche Möglichkeiten habe ich nun also um zu gewährleisten, dass ein Zugriff auf externe Dateien auf jeden Fall möglich ist?
Keine.
Meine eigenen Datei-Funktionen arbeiten (für ältere PHP-Versionen oder mehr Features) abgestuft: fopen, cURL, fsocket.
Aber wenn der Provider den Onlnezugriff für fopen sperrt, dann wird er es i.d.R. auch mit cURL und den Socket-Funktionen tun.
Falls doch nicht, weit Du jetzt, was zu tun ist ... ;-)
Gruß, Cybaer
Aber wenn der Provider den Onlnezugriff für fopen sperrt, dann wird er es i.d.R. auch mit cURL und den Socket-Funktionen tun.
In diesem Fall müsste also eine alternative Möglichkeit schaffen. Bei wie vielen Providern (vor allem den großen Providern) ist allow_url_fopen deaktiviert. Kann man davon ausgehen, dass bei einer Mehrzahl der Server das ganze funktioniert?
Hi,
Bei wie vielen Providern (vor allem den großen Providern) ist allow_url_fopen deaktiviert. Kann man davon ausgehen, dass bei einer Mehrzahl der Server das ganze funktioniert?
Keine Ahnung - bei unseren Kunden (und auch bei uns selbst) geht es überall (das betrifft Massenhoster wie auch kleine Provider).
Gruß, Cybaer
Tach,
Die meisten INI-Einstellungen lassen sich zur Laufzeit
ändern:
ini_set("allow_url_open", 1)
und danach dann file() oder fopen() anwenden.
Das Überschreiben funktioniert auch aus einer .htaccess
heraus, sofern PHP als Apache-modul läuft, oder htreader
in die Fast/CGI-Version eingebaut wurde. Lediglich den
"safe"-mode kann man damit nicht ändern.
G,
m
Hi,
Lediglich den
"safe"-mode kann man damit nicht ändern.
Ich glaube nicht, daß ein Provider den externen Zugriff (aus welchem Grund auch immer) deaktiviert, und dann vergißt, eine Freischaltung seitens des Kundens zu unterbinden.
Bei den (wenigen) Fällen, die ich kenne, ist dann selbstredend auch das deaktviert. =:-)
Eher fände ich schlüssig, den Online-Zugriff nur via fopen & Co zu deaktivieren, Socket & CURL offenzulassen. Getreu dem Motto: Bei Funktionen, die originär für Dateizugriffe gedacht sind, kann man sich eher unbedachterweise was einfangen, als bei Funktionen, die explizit für Requests gedacht sind.
Erfahrungsgemäß handeln aber manche Provider auch eher nach dem Motto "viel hilft viel" ... :-/
Gruß, Cybaer