Я сталкиваюсь со странной проблемой, когда $_GET
(а также $_REQUEST
) переменная пуста, хотя параметры передаются.
Мой код PHP:
echo $_SERVER['REQUEST_URI'];
echo print_r($_REQUEST);
echo print_r($_GET);
Выход:
/service/getAllOrders?sortBy=date_created&sortDir=desc
Array()
Array()
Я использую nginx и пересылаю все запросы на index.php. Моя конфигурация выглядит следующим образом:
server {
listen 80;
server_name decaro.localhost;
root /Users/rweiss/Sites/decaro/LocalOrderWebsite;
#access_log /usr/local/etc/nginx/logs/default.access.log main;
location / {
add_header Cache-Control "no-cache, no-store";
include /usr/local/etc/nginx/conf.d/php-fpm;
try_files $uri $uri/ /index.php$args;
}
location /assets/ {
allow all;
}
location = /info {
allow 127.0.0.1;
deny all;
rewrite (.*) /.info.php;
}
error_page 404 /404.html;
error_page 403 /403.html;
}
Зачем?
Решением было просто передать переменную $ query_string в nginx:
try_files $uri $uri/ /index.php?$query_string;
Спасибо за всю твою помощь.
Райан
Попробуйте распечатать:
echo $_SERVER['QUERY_STRING'];
Это данные GET, которые вставляются в Super Global $ _GET
Кроме того, я думаю, что вы должны позвонить в свой скрипт, используя эту ссылку:
www.yourdomain.com/service/getAllOrders.php?sortBy=date_created&sortDir=desc
Обратите внимание на .php ..
Посмотрите, какая у вас строка запроса, прежде чем проверять $ _GET, попробуйте распечатать, используя
echo print_r($_GET,1);