У меня есть небольшой пример кода для извлечения URI страницы. Эта страница запускается при установке Linux / Apache:
$url = "";
if (!isset($_SERVER['REQUEST_URI'])) {
echo "request_uri is not set";
$url = "value could not be set, !isset on REQUEST_URI was true";
} else {
$url = $_SERVER['REQUEST_URI'];
}
echo "url = $url <br />";
Когда я открываю эту страницу в браузере, кажется, что код достиг условия «else», и я получаю правильный URI.
Тем не менее, когда я запускаю этот код непосредственно из командной строки, используя «php filename.php», появляется код, который выполняет условие if, где REQUEST_URI не установлен. Если я удаляю условие «if», я получаю сообщение об ошибке «Примечание PHP: неопределенный индекс REQUEST_URI in …»
Это сводит меня с ума! Есть ли проблема с REQUEST_URI? Почему он возвращает разные ответы между браузером и командной строкой? Куда я могу обратиться на сервер, чтобы увидеть, действительно ли это значение установлено и может быть возвращено?
Спасибо за любую помощь, которую вы можете предоставить.
Если вы вызываете его из браузера, вы запрашиваете URI, а затем HTTP-сервер выполняет программу PHP и сообщает, что это за URI.
Если вы вызываете его из командной строки, то нет HTTP REQUEST и нет URI (и в этом отношении есть SERVER).
Поведение, которое вы получаете, вполне ожидаемо.
Других решений пока нет …