berkmancenter/amber_wordpress

getallheaders function is undefined (sites using nginx)

Closed this issue · 1 comments

Title
getallheaders() function is not defined

Effected Users
The WordPress users having their site running on nginx + php-fpm instead of Apache.

Description

  • getallheaders() isn't available when Nginx + php-fpm setup exist.
  • No check on Amber code if the function exist or not
  • Instead define function from our side to be 100% sure.
if (!function_exists('getallheaders')) {
    function getallheaders() {
        $headers = [];
        foreach ($_SERVER as $name => $value) {
            if (substr($name, 0, 5) == 'HTTP_') {
                $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value;
            }
        }
        return $headers;
    }
}

Place used
function validate_cache_referrer() in amber.php

Related links

Reference commit
22e0a39#diff-48a2bdcac7ee505e0aabaf11f1d698d8R794

Update:
Faced on
PHP Version 5.5.9-1ubuntu4.16
nginx version: nginx/1.8.1

Merged pull request