PHP有多少种方法可以打开带有POST数据的URL?

PHP有多少种方法可以打开带有POST数据的URL?,php,Php,我正在编写一个PHP错误收集小部件,它从应用程序收集错误,然后通过向URL发出POST请求来报告错误 有多少种不同的方法可以做到这一点,您将如何检测它们是否可用?在不同的服务器上可能没有安装扩展,并且可能会关闭安全选项,因此我希望尽可能多地尝试 卷曲是其中之一;检查是否已安装的最佳方法是什么 fopen()可以做URL,如果它有权限的话,但我认为你不能发送帖子数据 看起来它需要卷曲,所以我们还是用卷曲吧 可以使用PHP套接字,只需自己编写HTTP协议;有什么好的图书馆吗 此服务是BSD许可证

我正在编写一个PHP错误收集小部件,它从应用程序收集错误,然后通过向URL发出POST请求来报告错误

有多少种不同的方法可以做到这一点,您将如何检测它们是否可用?在不同的服务器上可能没有安装扩展,并且可能会关闭安全选项,因此我希望尽可能多地尝试

  • 卷曲是其中之一;检查是否已安装的最佳方法是什么
  • fopen()可以做URL,如果它有权限的话,但我认为你不能发送帖子数据
  • 看起来它需要卷曲,所以我们还是用卷曲吧
  • 可以使用PHP套接字,只需自己编写HTTP协议;有什么好的图书馆吗

此服务是BSD许可证下的开源服务,顺便说一句:

哦,等等,fopen似乎可以包含POST数据:

编辑:如果不稍加编辑,就无法从该URL获取代码,因此这是我的最终代码:

    if (ini_get('allow_url_fopen')) {
        $params = array('http' => array(
                'method' => 'POST',
                'content' => http_build_query($data),
                'header'=> "Content-type: application/x-www-form-urlencoded\r\n",
            ));
        $ctx = stream_context_create($params);
        $fp = fopen($url, 'rb', false, $ctx);
        if (!$fp) {
            print "FOPEN ERROR!";
            die();
        }
        fclose($fp);
    }

实现了连接到目标的四种不同方式,并且可以轻松地进行扩展(当然,您不需要为其使用完整的框架;)

至少要回答部分问题,您应该能够检测curl是否加载了以下内容:


是一个流行且功能齐全的库,用于发出HTTP请求

我认为,这个Q应该是一个社区维基,因为没有一个正确的答案,但我看不出如何让它成为一个?请版主注意,如果你真的认为应该的话,请我们将它改为CW。谢谢!正是我想要的。
if (!extension_loaded('curl')) {
    # Yay curl!
}