Я слышал, что 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.