PHP获取使用curl发送的头文件
我有两个文件client.php和server.php。我想用curl将头从客户端发送到服务器,然后在服务器中读取这些头,但不幸的是,我无法在服务器文件中获取头。我试图通过使用PHP获取使用curl发送的头文件,php,curl,Php,Curl,我有两个文件client.php和server.php。我想用curl将头从客户端发送到服务器,然后在服务器中读取这些头,但不幸的是,我无法在服务器文件中获取头。我试图通过使用getallheaders()来实现这一点,但没有显示任何内容。然后我尝试了get\u headers(),当我在上面使用var\u dump时,它会显示null 我的客户代码: ` $result=sendRequest(); 回声“res:.$结果 function sendRequest() { $meth
getallheaders()
来实现这一点,但没有显示任何内容。然后我尝试了get\u headers()
,当我在上面使用var\u dump
时,它会显示null
我的客户代码:
`
$result=sendRequest();
回声“res:.$结果
function sendRequest()
{
$method = 'test';
$params = array();
$params["method"] = $method;
$post = http_build_query($params, "", "&");
$headers = array(
"API-Key: test",
"API-Key2: test2",
"API-Key3: test3",
"API-Key4: test4",
);
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, "http://example.com/server.php");
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
//curl_setopt($curl, CURLOPT_HEADER, 1);
$ret = curl_exec($curl);
return $ret;
}
以及server.php:
get();
function get()
{
$head = get_headers();
var_dump($head);
}
使用从当前请求获取所有HTTP请求头
apache_request_headers();
看
如果apache_request_headers()不可用,则通过超级全局$\u服务器
循环并获取所需的信息,请求头以HTTP
开头,如
$headers = array();
foreach ($_SERVER as $key => $value) {
if (preg_match('/^HTTP_.+/', $key)) {
// sanitize keys removing HTTP_
$headers[str_replace('HTTP_','',$key)] = $value;
}
}
使用
echo $headers['API-Key'];
您使用的php版本是什么?Server:Apache/2 X-Powered-By:php/5.3.20我建议在您的服务器上禁用这些错误。您能否在代码中插入更多信息:错误报告(E_ALL);ini设置(“显示错误”,1);致命错误:调用未定义的函数getallheaders(),我希望是这个函数,但它没有改变任何东西,因为我不知道如何修复它。您可以尝试var_dump($_服务器)来查看您的头吗?在PHP5.4.0中调用未定义的函数apache_request_headers()@Rocket此函数在FastCGI下可用。以前,只有当PHP作为Apache模块安装时才支持它/2@Rocket然后,或者直接从$_SERVER@Rocket我已经编辑了我的答案,内容涵盖了
apache\u请求\u头文件
函数的不可用性。在$\u服务器
中创建一个foreach,将$\u服务器
中以HTTP开头的所有密钥放入一个新数组。