Laravel stripping $_GET parameters

2019-07-26 19:50发布

问题:

I am setting up an OAuth2 callback, and Laravel appears to be stripping any parameters passed via the URL (aka GET). This includes Input::get(), Input::all(), as well as the general PHP $_GET and even $_SERVER['QUERY_STRING'].

My initial reaction was an Nginx config error. But I am able to setup a test PHP file in my laravel/public directory which simply is:

<?php var_dump($_GET)

Hitting /test.php?code=123456ABCD generates the expected dump of an single value array.

Then, in Laravel routes, I create,

Route::get('/testcallback', function(){
    var_dump(Input::all());
});

Hitting /testcallback?code=123456ABCD generates the dumping of an empty array.

Is there something I am doing in my config or routes that would cause Laravel to strip the GET parameters?

Thanks.

回答1:

This ended up being Nginx after all. Turns out the symlink between my sites-available and sites-enabled host had broken, and the (well documented) solutions to the query_string issue was not flowing through.

try_files $uri $uri/ /index.php?$query_string;

This was fixed by simply removing the sites-enabled site, and relinking it, then restarting Nginx.

sudo rm /etc/nginx/sites-enabled/{site-name}
sudo ln -s /etc/nginx/sites-available/{site-name} /etc/nginx/sites-enabled/{site-name}
sudo nginx -t
sudo service nginx reload