LINUX.ORG.RU
ФорумAdmin

apache лезет туда, куда не просят.

 , ,


0

2

Запрос вида: http://domain.tld/var/test.php/qwerty приводит к тому, что в том числе проверяется существование файла по пути «<DocumentRoot>/qwerty». Вот что показывает strace:

22:15:24.155464 read(10, "GET /var/test.php/qwerty HTTP/1.0\r\nHost: ...
22:15:24.156439 stat("/1/2/3/var/test.php/qwerty", 0x7fffdc582740) = -1 ENOTDIR (Это не каталог) <0.000013>
22:15:24.171818 lstat("/1", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000019>
22:15:24.171891 lstat("/1/2", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0 <0.000012>
22:15:24.171940 lstat("/1/2/3", {st_mode=S_IFDIR|S_ISGID|0770, st_size=4096, ...}) = 0 <0.000011>
22:15:24.171989 open("/1/2/3/.htaccess", O_RDONLY|O_CLOEXEC) = 13 <0.000013>
22:15:24.172323 lstat("/1/2/3/var", {st_mode=S_IFDIR|S_ISGID|0770, st_size=4096, ...}) = 0 <0.000011>
22:15:24.172372 open("/1/2/3/var/.htaccess", O_RDONLY|O_CLOEXEC) = -1 ENOENT (Нет такого файла или каталога) <0.000012>
22:15:24.172423 lstat("/1/2/3/var/test.php", {st_mode=S_IFREG|0660, st_size=19, ...}) = 0 <0.000011>
22:15:24.172497 stat("/1/2/3/var/test.php", {st_mode=S_IFREG|0660, st_size=19, ...}) = 0 <0.000012>
22:15:24.172583 stat("/1/2/3/qwerty", 0x7fffdc5824e0) = -1 ENOENT (Нет такого файла или каталога) <0.000011>
22:15:24.172629 lstat("/1", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 <0.000010>
22:15:24.172671 lstat("/1/2", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0 <0.000010>
22:15:24.172711 lstat("/1/2/3", {st_mode=S_IFDIR|S_ISGID|0770, st_size=4096, ...}) = 0 <0.000010>
22:15:24.172753 lstat("/1/2/3/qwerty", 0x7fffdc5824e0) = -1 ENOENT (Нет такого файла или каталога) <0.000014>
22:15:24.172816 stat("/1/2/3/qwerty", 0x7fffdc5823a0) = -1 ENOENT (Нет такого файла или каталога) <0.000011>
22:15:24.172860 lstat("/1/2/3/qwerty", 0x7fffdc5823a0) = -1 ENOENT (Нет такого файла или каталога) <0.000010>
22:15:24.172901 stat("/1/2/3/qwerty", 0x7fffdc5823a0) = -1 ENOENT (Нет такого файла или каталога) <0.000010>

Что apache заставляет думать, что возможно есть «<DocumentRoot>/что-то», если в запросе после имени php-скрипта через слеш указано это что-то?


А чего это имя php-файла делает посреди URI? Оно ж его теперь как название директории воспринимает, КМК.

Korchevatel ★★★★★
()

Ищи в настройке обработчика .php файлов. Там где-то такое есть для совместимости с сайтами/браузерами/поисковиками из 90-х. А вообще - выкинь апач, он на 90% состоит из легаси-помойки, и ты ещё не раз наткнёшься на подобную дичь с ним. Установи нормальный современный веб-сервер - nginx. Во всех нормальных местах от апача избавились ещё 10+ лет назад.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.