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 GET 메소드를 사용하여 HTTP 1.0을 통해 파일/리소스에.

file_put_contents()파일에 기록하지만 래퍼는 GET을 사용하여 HTTP만 읽을 수 있으므로 HTTP를 통해서는 기록할 수 없습니다.


원하는 것을 달성하려면 다른 접근 방식이 필요합니다.

의 문서 루트에서 에서 파일을 가져온 후 website2.fr에 쓰는 스크립트를 작성할 수 있습니다 .file.xmlhttp://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를 통해 검색된 http://website2.fr/file.xml내용과 동일합니다 .http://website1.fr/file.xml

관련 정보