file_put_contents no se sobrescribe/opción de contexto de sobrescritura no especificada

file_put_contents no se sobrescribe/opción de contexto de sobrescritura no especificada

Escuché que file_put_contents sobrescribe el archivo si existe. Eso es lo que quiero pero no funciona. ¿Qué hacer?

  $contentsAnnonces = file_get_contents("http://website1.fr/file.xml");
  $filename = "http://website2.fr/file.xml";
  file_put_contents($filename, $contentsAnnonces);

Error :

El archivo remoto ya existe y la opción de contexto de sobrescritura no está especificada

Respuesta1

No puedes escribir en HTTP usando file_put_contents().

Desde elfile_put_contents()documentación:

Se puede utilizar una URL como nombre de archivo con esta función si elenvoltorios abiertoshan sido habilitados. Verabrir()para obtener más detalles sobre cómo especificar el nombre del archivo. Ver elProtocolos y envoltorios admitidospara obtener enlaces a información sobre las capacidades que tienen los distintos contenedores, notas sobre su uso e información sobre las variables predefinidas que puedan proporcionar.

Y deDescripción de PHP del protocolo HTTP(el énfasis es mío):

Permiteacceso de solo lecturaa archivos/recursos a través de HTTP 1.0, utilizando el método HTTP GET.

file_put_contents()escribe en un archivo, pero no puede hacerlo a través de HTTP porque el contenedor solo puede leer HTTP usando GET.


Necesita un enfoque diferente para lograr lo que desea.

Desde la raíz del documento de website2.fr, puede escribir un script que escriba file.xmldespués de recuperar el archivo http://website1.fr/file.xml.

Ejemplo:

<?php
$contentsAnnonces = file_get_contents("http://website1.fr/file.xml");
file_put_contents(ORIGINE_DU_DOCUMENT . "/file.xml", $contentsAnnonces);

… ¿dónde ORIGINE_DU_DOCUMENTestá la ruta a la raíz del documento en el sitio website2.fr?

Cuando ejecute el script, el contenido de http://website2.fr/file.xmlserá idéntico al contenido de http://website1.fr/file.xmlrecuperado a través de HTTP.

información relacionada