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()文档

如果fopen 包装器已启用。请参阅打开()有关如何指定文件名的更多详细信息。请参阅支持的协议和包装器有关各种包装器的功能、使用说明以及它们可能提供的任何预定义变量的信息的链接。

来自PHP 对 HTTP 协议的描述(重点是我的):

允许只读访问通过 HTTP 1.0 使用 HTTP GET 方法访问文件/资源​​。

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

相关内容