fopen和curl之间最大的区别是什么?

时间:2010-02-19 13:20:46

标签: php curl fopen

我正在使用PHP创建一个Web应用程序,并希望从另一个域中读取内容。 我的主要选项似乎是fopencurl

这两种方法有哪些主要区别,特别是在安全性和可用选项方面?

如果网址是http或https网站,这是否重要?

2 个答案:

答案 0 :(得分:16)

Curl使用外部库,它有更多的权力来自定义请求 - 自定义标头,生成POST请求,上传文件。我必须说出你需要的一切。

Fopen仅限于发出网址的GET请求而无需进一步定制。

至于安全性,CURL不受PHP中安全配置的影响(如禁止远程URL等的fopen)。

这两种可能性都会返回您可以以您想要的任何可能方式使用的数据。如果你在项目中设置安全漏洞,那么在获取数据之后就是你的错。

我也不太确定,但我认为fopen无法处理SSL(https)连接。 fopen和CURL都支持SSL(正如Andy Shellam在下面的评论中所述)。

答案 1 :(得分:2)

有关影响fopen的一些安全设置,请参阅What are the important differences between using fopen($url) and curl in PHP?,即allow_url_include。

另外,请注意,如果使用curl设置CURLOPT_FOLLOWLOCATION,那么curl会重定向到file://以获取数据(仍然受open_basedir限制)。重定向到其他方案,如ftp://可能会更糟(没有测试过ftp://)。没有那个setopt卷曲根本不遵循重定向。 fopen似乎默认使用302,但只有http:// - > http://和 http:// - >文件://