file_put_contents не перезаписывается / не указана опция контекста перезаписи

file_put_contents не перезаписывается / не указана опция контекста перезаписи

Я слышал, что file_put_contents перезаписывает файл, если он существует? Это то, что я хочу, но это не работает. Что делать?

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

Ошибка :

Удаленный файл уже существует, и параметр перезаписи контекста не указан

решение1

Вы не можете писать в HTTP, используя file_put_contents().

Изfile_put_contents()документация:

С помощью этой функции в качестве имени файла можно использовать URL, еслиfopen-оберткибыли включены. Смотретьfopen()для получения более подробной информации о том, как указать имя файла. См.Поддерживаемые протоколы и оболочкидля получения ссылок на информацию о возможностях различных оболочек, примечания по их использованию и информацию о любых предопределенных переменных, которые они могут предоставлять.

И изОписание протокола HTTP на языке PHP(выделено мной):

Позволяетдоступ только для чтенияк файлам/ресурсам через HTTP 1.0, используя метод HTTP GET.

file_put_contents()записывает в файл, но не может сделать это по HTTP, поскольку оболочка может читать HTTP только с помощью GET.


Вам нужен другой подход, чтобы добиться желаемого.

Из корневого каталога документов website2.frможно написать скрипт, который будет записывать в file.xmlфайл после его извлечения из http://website1.fr/file.xml.

Пример:

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

… где ORIGINE_DU_DOCUMENTнаходится путь к корневому каталогу документов на сайте website2.fr.

При запуске скрипта содержимое http://website2.fr/file.xmlбудет идентично содержимому, http://website1.fr/file.xmlполученному по HTTP.

Связанный контент