我听说 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()
。
如果fopen 包装器已启用。请参阅打开()有关如何指定文件名的更多详细信息。请参阅支持的协议和包装器有关各种包装器的功能、使用说明以及它们可能提供的任何预定义变量的信息的链接。
来自PHP 对 HTTP 协议的描述(重点是我的):
允许只读访问通过 HTTP 1.0 使用 HTTP GET 方法访问文件/资源。
file_put_contents()
写入文件,但不能通过 HTTP 执行此操作,因为包装器只能使用 GET 读取 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