Что такое PATH_INFO в PHP?

26

все внешние URL-адреса выглядят как "module/action? key1 = param1". Невозможно настроить, но это быстро. Разница в том, что первый использует PHP GET, а второй использует PATH_INFO.

Я видел PATH_INFO несколько раз, но до сих пор не знаю, что это такое. Что он делает?

Теги:

2 ответа

34
Лучший ответ

Фактически, PATH_INFO связан с веб-сервером Apache, обслуживающим страницы PHP, а не PHP как таковой.

PATH_INFO - это переменная среды, установленная Apache, когда включена директива AcceptPathInfo. Он будет содержать информацию о конце пути, которая следует за фактическим именем файла или несуществующим файлом в существующем каталоге, независимо от того, принят или отклонен запрос. Затем переменные среды передаются в модуль Apache/CGI, который отвечает за отображение страницы.

Переменная доступна в PHP с помощью $_SERVER['PATH_INFO'].

Например, предположим, что местоположение /test/ указывает на каталог, содержащий только один файл here.html. Затем запросы для /test/here.html/more и /test/nothere.html/more собирают /more как PATH_INFO.

Документация Apache Core: AcceptPathInfo Директива

  • 12
    Прочитав ваш ответ, можно сделать вывод, что полагаться на PATH_INFO - плохая практика, и это не так. PATH_INFO является частью определения для CGI (как указал SimonSinCity). Он поддерживается большинством веб-серверов, а не только Apache.
15

Поскольку переменная PATH_INFO является частью определения для CGI, вы также должны взглянуть туда;)

https://tools.ietf.org/html/rfc3875#section-4.1.5

Ещё вопросы

Сообщество Overcoder
Наверх
Меню