Вот это ребус на ночь глядя! Кто подскажет, в чём прикол?

12
DyaDya
На сайте с 11.04.2007
Offline
147
1759

Есть магазина на движке вебассист. К нему прилепили сапу. Но на всех страницах показываются одни и те же ссылки, что и на главной странице. Начал разбираться, что может быть за косяк, оказалось, что в переменной $_SERVER['REQUEST_URI'] хранится всегда "/". Ок, стал копаться глубже, тупо вывожу вот таким вот образом:


echo "<br>".$_SERVER['REQUEST_URI']."<br><br>";
phpinfo();

В итоге!!!!!

echo "<br>".$_SERVER['REQUEST_URI']."<br><br>";

выводит всегда "/" не зависимо от URL сайта.

Но!!!

phpinfo();

выводит правильный пут в переменной REQUEST_URI, например,

Apache Environment

Variable Value

... тут список разных переменных...

REQUEST_URI /category/zarubezhnoe-kino/

Что за дилема? Не врублюсь. Как так может быть? Эти две строки идут друг за другом, подмены никакой нет. В одном случае при обращении по $_SERVER['REQUEST_URI'] даёт одно значение, в другом при запросе phpinfo(); уже другое.

Кто-нибудь сможет раскусить фишку?

Выбирайте качественный хостинг (http://vashmaster.ru/informaciya/o_poleznyh_programmah/news83.php) и продвигайте сайты в СЕОПУЛЬТ (http://seopult.ru/ref.php?ref=72b5ed9561fe66a1). А на «SAPE» я в обиде :) Не упрекайте за очепятки, пишу вслепую (http://ergosolo.ru/) и также делаю сайты (http://www.vashmaster.ru/) ;)
[umka]
На сайте с 25.05.2008
Offline
456
#1

Пхп работает как модуль или как cgi?

[umka] добавил 06.12.2010 в 00:14

сделайте пустой скриптик script.php

<?

echo "<br>".$_SERVER['REQUEST_URI']."<br><br>";

phpinfo();

?>

и вызовите его.

возможно, движок занимается самодеятельностью.

[umka] добавил 06.12.2010 в 00:19

возможно, где-нибудь вместо

if ($_SERVER['REQUEST_URI']=='/')

написано

if ($_SERVER['REQUEST_URI']='/')

:)

Лог в помощь!
DyaDya
На сайте с 11.04.2007
Offline
147
#2
'[umka:
;8125573']Пхп работает как модуль или как cgi?

[umka] добавил 06.12.2010 в 00:14
сделайте пустой скриптик script.php
<?
echo "<br>".$_SERVER['REQUEST_URI']."<br><br>";
phpinfo();
?>
и вызовите его.
возможно, движок занимается самодеятельностью.

[umka] добавил 06.12.2010 в 00:19
возможно, где-нибудь вместо
if ($_SERVER['REQUEST_URI']=='/')
написано
if ($_SERVER['REQUEST_URI']='/')
:)

Проверил на отдельном скриптеке, всё ОК. Пути правильные везде.

DyaDya добавил 06.12.2010 в 00:25

[umka], более того!!! Сделал для прикола вот так, попробовал заменить значение, вдруг, оно правда где-то перебивается... Проверяю так:

<?
$_SERVER['REQUEST_URI']="/";
echo "<br>".$_SERVER['REQUEST_URI']."<br><br>";
phpinfo();
?>

В итоге, внимание!!! Всё равно путь оказывается правильным! "/" не перезаписывается в переменную окружения!

В $_SERVER['REQUEST_URI'] всё равно оказывается правильный путь). Это даже, возможно, всё логично. Чтобы скрипты не могли окружение апача менять. Но тогда почему получается такой косяк, как в первом посте?!

[umka]
На сайте с 25.05.2008
Offline
456
#3

Это какая-то фантастика. Массив этот перезаписываемый.

Но если, как вы говорите, в отдельном скрипте всё правильно, то дело в движке.

Нужно по-тихоньку дебагить шаг за шагом.

DyaDya
На сайте с 11.04.2007
Offline
147
#4
[umka:
]Но если, как вы говорите, в отдельном скрипте всё правильно, то дело в движке.

В отдельном скрипте правильно. Но массив не перезаписываемый оказывается).

А с другой стороны, первый пост говорит о другом, что, видимо, перезаписываемый. Вот и ломаю голову.

А если с третьей стороны глянуть, то почему phpinfo() показывается правильно значение пути в REQUEST_URI, а в переменной $_SERVER['REQUEST_URI'] реально оказывается совсем другое значение. phpinfo из другого места данные свои вытягивает что ли?

p.s. сложно выражаюсь, но реальность пока такая)

[umka]
На сайте с 25.05.2008
Offline
456
#5

Если отдельный скриптик

<?

$_SERVER['REQUEST_URI']="/";

echo "<br>".$_SERVER['REQUEST_URI']."<br><br>";

phpinfo();

?>

Не может перезаписать этот массив, то скорее всего на сервере устроено какое-то шаманство, вроде патчей для безопасности, и оно не даёт менять этот массив и, при этом, само иногда глюкует (случай в посте №1)

:)

DyaDya
На сайте с 11.04.2007
Offline
147
#6
[umka:
]Не может перезаписать этот массив, то скорее всего на сервере устроено какое-то шаманство, вроде патчей для безопасности, и оно не даёт менять этот массив и, при этом, само иногда глюкует (случай в посте №1)

Пока остаётся верить только в это. Но не понятно, почему тогда при вызове этих строк друг за другом, они показываются разные значения в REQUEST_URI ?


1. echo "<br>".$_SERVER['REQUEST_URI']."<br><br>";
2. phpinfo();

phpinfo() при выводе, свои данные откудато вытаскивает, не завязанные напрямую с $_SERVER['REQUEST_URI'] ??? Что-то через чур уж зашаманено.

[umka]
На сайте с 25.05.2008
Offline
456
#7
DyaDya:
Пока остаётся верить только в это. Но не понятно, почему тогда при вызове этих строк друг за другом, они показываются разные значения?

phpinfo() при выводе, свои данные откудато вытаскивает, не завязанные напрямую с $_SERVER['REQUEST_URI'] ??? Что-то через чур уж зашаманено.

Не путаете с Apache Environment $REQUEST_URI ?

Я вот делаю

<?

$_SERVER['REQUEST_URI']='/abrakadabra';

phpinfo();

?>

и у меня phpinfo показывает в $REQUEST_URI по-прежнему '/script.php', а в $_SERVER['REQUEST_URI'] — '/abrakadabra'

DyaDya
На сайте с 11.04.2007
Offline
147
#8
[umka:
]Я вот делаю
<?
$_SERVER['REQUEST_URI']='/abrakadabra';
phpinfo();
?>

и у меня phpinfo показывает в $REQUEST_URI по-прежнему '/script.php', а в $_SERVER['REQUEST_URI'] — '/abrakadabra'

Везёт вам). У вас сервер менее заколдованный) Может это связано с тем, что у вас пхп стоит как cgi, а в моём случае, как модуль? Или наоборот.

[umka]
На сайте с 25.05.2008
Offline
456
#9
DyaDya:
Везёт вам). У вас сервер менее заколдованный)

[умку распирает о гордости]

вобщем, если такой код

<?

$_SERVER['REQUEST_URI']='/test';

echo $_SERVER['REQUEST_URI'];

?>

не выдаёт установленное значение, то нужно интересоваться у хостера на предмет "а чё вообще за фигня?", потому что то, что этому припятствует, явно глючит (судя по ситуации из первого поста)

DyaDya
На сайте с 11.04.2007
Offline
147
#10
[umka:
]не выдаёт установленное значение, то нужно интересоваться у хостера на предмет "а чё вообще за фигня?"

Т.е. идти нужно к колдунам))) Ок, так и делаю тоды.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий