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()有關如何指定檔案名稱的更多詳細資訊。請參閱支援的協定和包裝器有關各種包裝器具有哪些功能的資訊、有關其用法的註釋以及有關它們可能提供的任何預定義變數的資訊的連結。

並從PHP對HTTP協定的描述(強調我的):

允許只讀訪問使用 HTTP GET 方法透過 HTTP 1.0 存取檔案/資源。

file_put_contents()寫入文件,但無法透過 HTTP 執行此操作,因為包裝器只能使用 GET 讀取 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

相關內容