PHP встроенный сервер / скрипт маршрутизации: пустые суперглобалы - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь запустить локальный сервер, который перехватывает все вызываемые URL.По сути, я хочу смоделировать REST-интерфейс для тестирования и записать все URL-адреса и данные POST / PUT / PATCH в файл.

Я запускаю сервер следующим образом:

php -S localhost:9999 -t /var/www/tests/import/ /var/www/tests/import/index.php

/ var / www / tests / import / - это рабочий каталог, /var/www/tests/import/index.php - это скрипт маршрутизации, который вызывается для каждого вызываемого URL.

Исходный кодindex.php:

$path = __DIR__ . '/output/test.txt';

file_put_contents($path, 'POST:' . var_export($_POST) . PHP_EOL, FILE_APPEND);
file_put_contents($path, 'SERVER:' . var_export($_SERVER) . PHP_EOL, FILE_APPEND);
file_put_contents($path, 'REQUEST-URI: ' . var_export($_SERVER["REQUEST_URI"]) . PHP_EOL, FILE_APPEND);
file_put_contents($path, 'PAYLOAD: '. file_get_contents('php://input') . PHP_EOL, FILE_APPEND);
file_put_contents($path, 'ENV: '. var_export($_ENV) . PHP_EOL, FILE_APPEND);
file_put_contents($path, 'RQUEST: '. var_export($_REQUEST) . PHP_EOL, FILE_APPEND);

Вывод скрипта выглядит так:

POST:
SERVER:
REQUEST-URI: 
PAYLOAD: {"success":true,"duration":10.624989032745361,"error":null}
ENV: 
RQUEST: 

Итак, скрипт вызывается, однако все суперглобальныепусто, и единственное, что записывается в мой файл - это полезная нагрузка запроса.Теперь я хочу узнать только, как был назван URL-адрес, как я могу его архивировать?

Настройки должны быть стандартными для Ubuntu 18, это настройка порядка переменных в php.ini:

variables_order = "GPCS"

1 Ответ

0 голосов
/ 16 октября 2018

Чтобы вернуть значение (а не вывод) из var_export(), второй аргумент должен быть true;Например:

echo var_export(range(1, 3), true);

Выход:

array (
  0 => 1,
  1 => 2,
  2 => 3,
)

Надеюсь, это поможет

...