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()
ファイルに書き込みますが、ラッパーは GET を使用して HTTP を読み取ることしかできないため、HTTP 経由では書き込みできません。
望むことを達成するには、別のアプローチが必要です。
のドキュメント ルートから、からファイルを取得した後に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 経由で取得されたhttp://website2.fr/file.xml
の内容と同一になりますhttp://website1.fr/file.xml
。