2010-07-03 51 views
0

我已经写了一个WordPress插件,并且试图找到让程序检查我的服务器上的更新并自动下载它们的最佳方式根据用户的要求。这将基本上用于下载额外的功能,我不想放入WordPress存储库,因为他们没有GNU许可证。通过程序将外部文件下载到服务器的最佳方式

我编写了程序来检查更新,我不确定的是下载部分。

我应该使用file_get_contents()然后用fwrite()将结果写入目录吗?我确信这是一种做法,但我正在寻找最具跨服务器安全性的方法,因为插件被成千上万的人使用,但它们都是PHP,而且大多数都是PHP5 +。我担心某些主机可能会有某种安全性阻止我这样做。卷曲会是更好的选择吗?

谢谢。

回答

1

响应不要重新发明轮子!为此目的,WordPress有一个HTTP API

退房食品法典委员会的要领 - http://codex.wordpress.org/HTTP_API

您也可以浏览源wp-includes/class-http.php

+0

你是对的,我在发布这个问题后不久就发现了这些功能。 WP有许多功能可用于下载标题,文件,提取它们等。不幸的是,除了文件中的PHPDoc条目之外,没有多少文档可用。 – Andy 2010-07-11 17:20:58

3

您可以使用file_put_contents,这比使用file_get_contents将所有内容加载到内存然后调用fwrite要高效得多。第二个参数接受一个流资源,您可以使用fopen或(如果您想要绕过allow_url_fopen限制,fsockopen)打开。

因此,只使用核心功能(无卷曲扩展等)和工作在几乎埃夫配置的简单的方法是:

+0

看起来不错,我会对其进行测试,并张贴在这里的结果。 – Andy 2010-07-04 00:26:05

+0

如果您的可下载文件以某种方式受密码保护(基本的HTTP验证,基于表单的登录等),那么您必须使用CURL。 'file_get_contents()'是非常基本的,不能处理任何类型的认证/登录。 – 2010-07-04 07:26:04

+0

@Marc http wrapper(file_get_contents将使用)可以进行基本身份验证,并且可以手动实施摘要身份验证(如果需要,可以通过一些努力来授予)。由于您可以通过创建适当的上下文发送任意发布数据和任意标题,因此基于表单的登录也可以由http包装处理。见http://www.php.net/manual/en/context.http.php – Artefacto 2010-07-04 07:33:03

相关问题