Ich habe gehört, dass file_put_contents die Datei überschreibt, wenn sie existiert? Das ist, was ich will, aber es funktioniert nicht. Was tun?
$contentsAnnonces = file_get_contents("http://website1.fr/file.xml");
$filename = "http://website2.fr/file.xml";
file_put_contents($filename, $contentsAnnonces);
Fehler :
Remote-Datei ist bereits vorhanden und Kontextüberschreiboption nicht angegeben
Antwort1
Sie können nicht mit in HTTP schreiben file_put_contents()
.
Von demfile_put_contents()
Dokumentation:
Mit dieser Funktion kann eine URL als Dateiname verwendet werden, wenn dieFopen-Wrapperaktiviert wurden. Siehefopen()Weitere Informationen zum Angeben des Dateinamens finden Sie imUnterstützte Protokolle und Wrapperfür Links mit Informationen über die Fähigkeiten der verschiedenen Wrapper, Hinweise zu ihrer Verwendung und Informationen zu allen vordefinierten Variablen, die sie möglicherweise bereitstellen.
Und vonPHPs Beschreibung des HTTP-Protokolls(Hervorhebung von mir):
ErlaubtNur-Lese-Zugriffauf Dateien/Ressourcen über HTTP 1.0 unter Verwendung der HTTP-GET-Methode.
file_put_contents()
schreibt in eine Datei, kann dies aber nicht über HTTP tun, da der Wrapper HTTP nur mit GET lesen kann.
Sie benötigen einen anderen Ansatz, um Ihre Ziele zu erreichen.
Aus dem Dokumentstammverzeichnis von können Sie ein Skript schreiben, das nach dem Abrufen der Datei von website2.fr
in schreibt .file.xml
http://website1.fr/file.xml
Beispiel:
<?php
$contentsAnnonces = file_get_contents("http://website1.fr/file.xml");
file_put_contents(ORIGINE_DU_DOCUMENT . "/file.xml", $contentsAnnonces);
… wo ORIGINE_DU_DOCUMENT
ist der Pfad zum Dokumentstamm auf der Site website2.fr
.
Wenn Sie das Skript ausführen, http://website2.fr/file.xml
ist der Inhalt von identisch mit dem http://website1.fr/file.xml
über HTTP abgerufenen Inhalt.