Bild von anderer Seite kopieren
Rike
- php
Hallo Leute,
kann mir jemand sagen, wie ich ein bestimmtes Bild von einer anderen Seite per PHP auf meinen Server speichern kann?
Hab mal irgendwas von FTP-Befehlen mit PHP gelesen - leider unterstützt mein Provider die nicht. Geht das nicht irgendwie mit dem file() Befehl?
Wer toll, wenn mir jemand helfen könnte ...
Liebe Grüsse :-)
Rike
Hallo,
schau mal im php-Manual unter "Befehle des Dateisystems"...
$fp = fopen(quelle,r)
$daten = fread($fp,anzahl) anzahl entweder hoch genug,
oder Schleife bauen.
fclose($fp)
$fp = fopen(ziel,w)
$count = fwrite($fp,$daten)
fclose($fp)
Und schon ist das File kopiert...
Grüße
Tom
hi,
Und schon ist das File kopiert...
kleine ergänzung: das öffnen von remote-dateien über http setzt voraus, dass die option allow_url_fopen aktiviert ist.
bei einem provider, der die ftp-funktionen abgeschaltet hat, evtl. auch nicht aktiviert.
http://www.php.net/manual/de/ref.filesystem.php#ini.allow-url-fopen
gruss,
wahsaga
Hallo Wahsaga,
kleine ergänzung: das öffnen von remote-dateien über http setzt voraus, dass die option allow_url_fopen aktiviert ist.
bei einem provider, der die ftp-funktionen abgeschaltet hat, evtl. auch nicht aktiviert.
http://www.php.net/manual/de/ref.filesystem.php#ini.allow-url-fopen
hab mal geclickt:
allow_url_fopen "1" PHP_INI_ALL
user_agent NULL PHP_INI_ALL
default_socket_timeout "60" PHP_INI_ALL
from NULL ??
auto_detect_line_endings "Off" PHP_INI_ALL
Das hieße dann doch, dass man es auch aus dem Script heraus einschalten kann, bevor man es benutzen will. Es sei denn...
ini_set() ist generell abgeschaltet, oder?
Und mit default_socket_timeout müsste sich dann auch ein anderer Thread der letzten Tage erschlagen lassen, wo nach dem Timeout für Zugriffe auf externe Ressourcen gefragt wurde?
Tom
hi,
allow_url_fopen "1" PHP_INI_ALL
Das hieße dann doch, dass man es auch aus dem Script heraus einschalten kann, bevor man es benutzen will. Es sei denn...
ini_set() ist generell abgeschaltet, oder?
ich glaube es gibt noch möglichkeiten, hier zu differenzieren, so dass der provider einzeln entscheiden kann, welche optionen er dich überschreiben lässt, und welche nicht.
z.b. die maximale scriptlaufzeit wird dich kaum ein provider einfach so überschreiben lassen, andere weniger performance-kritische werte aber schon.
Und mit default_socket_timeout müsste sich dann auch ein anderer Thread der letzten Tage erschlagen lassen, wo nach dem Timeout für Zugriffe auf externe Ressourcen gefragt wurde?
bin mir da nicht sicher,
"Standardtimeout (in Sekunden) für Socket basierte Streams."
gruss,
wahsaga
Hello,
bin mir da nicht sicher,
"Standardtimeout (in Sekunden) für Socket basierte Streams."
- ist ein include (darum ging es ja glaube ich in dem thread) für php gleichbedeutend mit "socket basierter stream", oder bezieht sich das lediglich auf das arbeiten mit den socket-funktionen von php?
Ich denke, das entscheidet sich erst im Parser. Einen Include vom lokalen Dateisystem wird das nicht berühren. Der bekommt innerhalb von Millisekunden den Garaus, wenn er nicht greift.
include(), file(), readfile(), fread() ... müssten eigentlich alle davon betroffen sein, da PHP die ganzen Socketoperationen freundlicherweise automatisch ausführt, wenn es sich um eine externe Ressource handelt.
Wie könnte man das nun ausprobieren? Ich habe doch über diese Timeout-Sace noch recht lange nachgedacht und just in meiner Antwort (nach Tagen) ist mir dann der PC abgeschmiert. Ich hatte aber nicht wirkliche eine Lösung, sondern nur Medizin. Vorher einen PHP-Ping auf die Domain (IP) der Ressource durchführen...
Grüße
Tom
Hi,
erstmal Danke - probiers gleich mal aus ...
Rike
Hi,
$fp = fopen(quelle,r)
$daten = fread($fp,anzahl) anzahl entweder hoch genug,
oder Schleife bauen.
anzahl ist das Problem! Wie soll ich das machen mit der Schleife?
Sie Datei ist ein Bild ...
Das klappt nicht - Hilfe!!!!
LG Rike
hi,
$fp = fopen(quelle,r)
$daten = fread($fp,anzahl) anzahl entweder hoch genug,
oder Schleife bauen.anzahl ist das Problem! Wie soll ich das machen mit der Schleife?
Sie Datei ist ein Bild ...
vergiss die schleife, die ist hier wahrscheinlich nicht erforderlich.
sieh dir die beispiele im manual an: http://www.php.net/manual/de/function.fread.php
gruss,
wahsaga