[筆記] 在nginx下發生 Call to undefined function getallheaders()

在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