Вы не можете писать в HTTP, используя file_put_contents() .
Из документации file_put_contents():
URL может использоваться как имя файла с этой функцией, если включены обертки fopen . Смотрите fopen() для более подробной информации о том, как указать имя файла. См. Поддерживаемые протоколы и оболочки для ссылок на информацию о возможностях, которые имеют различные оболочки, примечания об их использовании и информацию о любых предопределенных переменных, которые они могут предоставить.
И из описания PHP протокола HTTP (выделено мое):
Разрешает доступ только для чтения к файлам / ресурсам через 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.