在nginx中無法實用getallheaders(),會報出 Call to undefined function getallheaders() 錯誤
在一個API環境中,下載了一個套件要測試,在依照範例把檔案設定好後,卻無法正常運作,一直回報500錯誤,後來去找了LOG才發現錯誤訊息為
「Call to undefined function getallheaders()」,居然是一個內建函數找不到。
後來在stackoverflow找到很多人都有一樣的問題,原因是因為這個函數是apache專用的,所以在nginx+php-fpm的環境中無法正常運作,解決的方法也很簡單,就是自己加入一個getallheaders函數,如下
if (!function_exists('getallheaders'))
{
function getallheaders()
{
$headers = array ();
foreach ($_SERVER as $name => $value)
{
if (substr($name, 0, 5) == 'HTTP_')
{
$headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
}
}
return $headers;
}
}
程式就會運作了。
參考網址:https://stackoverflow.com/questions/13224615/get-the-http-headers-from-current-request-in-php