Особенности require?

Yastroitel

Новичок
Добрый день!

Столкнулся со следующей проблемой.

Есть чужой скрипт и одна из его строчек подключает сторонний файл php c командной строкой GET, то есть подключает файл примерно таким кодом:
PHP:
require ('smth.php?id=123&wtf=smth&etc=evthng');
Локальный Денвер кушает все это без всяческих проблем, а вот на хостинге появляется Fatal Error c комментарием
Failed opening required ...
Техподдержка хостера ответила что-то вроде
Таким образом можно включать только готовые файлы.
Я перерыл все возможные описания require но нигде не нашел на такое отсылки.

Подскажите пожалуйста в чем может быть проблема и куда копать далее?
 

tz-lom

Продвинутый новичок
перепиши скрипт чтобы такое подключение не требовалось , подключать другие скрипты через GET запрос это дыра, тормоз и говнокод.
 

Yastroitel

Новичок
Я бы и рад - но в данной ситуации - у меня не хватит ни времени, ни денег, ни желания, ни иных возможностей.

А потому нужно просто заставить эту адскую машину работать.
 

tz-lom

Продвинутый новичок
а не судьба, хостинги отключают эту возможность и правильно делают, вы можете их слёзно умолять но они её не включат (если не идиоты конечно)
вообще переделать в нормальный вариант не должно составить проблем, тут делов то на 10 минут
 

Yastroitel

Новичок
Возможно и на десять - если вы писали скрипт самостоятельно и ваш уровень в программировании выше среднего.

Мой уровень же оставляет пока желать лучшего и скрипт совершенно чужой.

Вот только одна идея - а что если мне включать скрипт без обращения к командной строке а до включения передать все переменные в массив $_GET ручками?
Вообще страшно?
 

С.

Продвинутый новичок
то есть подключает файл примерно таким кодом:
А можно без "примерно". Потому что "примерно" такой код нигде не будет работать, даже в Денвере.

подключать другие скрипты через GET запрос
Я не вижу здесь ГЕТ запроса.
 

Yastroitel

Новичок
Вот образец кода
PHP:
 $path=view.php?ip=$ip&page=".$page."&".$qwery;
  require ($path);
Возможно я не сильный специалист - но под GET я понимал значения переменных после знака вопроса.

В Денвере скрипт работает как задумано.

Нутром чую что подобное я могу разрешить в .htaccess но не знаю какая именно директива за это отвечает.
 

С.

Продвинутый новичок
Попробуй еще раз скопировать код. Потому что со второго раза у тебя опять синтаксически неправильный код получился:

$path=view.php?ip=$ip&page=".$page."&".$qwery;
 

Yastroitel

Новичок
Да конечно - тут с кавычками проблемы

Вот так
PHP:
$path="view.php?ip=$ip&page=" . $page . "&" . $qwery;
  require ($path);
Теперь вроде все правильно.

Но проблема здесь была не в кавычке
 

С.

Продвинутый новичок
А можно все-таки оригинальный код, а не в пересказе, при котором кавычки теряются? С подставленной ковычкой все равно бессмыслица получается.
 

Yastroitel

Новичок
Ладно уговорили:
Вот слово в слово:

PHP:
  $path2=$PATH."script/".$rowpage[ttype]."/view.php?ip=$ip&host=$host&modul=".$rowpage[ttype]."&page=".$page."&".$qwery;
  require ($path2);
Суть то все равно мне кажется не изменилась
 

С.

Продвинутый новичок
Теперь показывай, что находится в $PATH
 

Yastroitel

Новичок
PHP:
$PATH="http://www.****.ru/security/";
В принципе уже пробовал и варианты без полного УРЛ и в htaccess разрешил использование урлов.
 

С.

Продвинутый новичок
Очень интересно! Теперь надо показывать и сам файл "http://www.****.ru/security/script/".$rowpage[ttype]."/view.php"
Что же в нем такое, что его надо вызывать через такую жопу?
 

Yastroitel

Новичок
И не говорите!

Мало того - файлов таких несколько - обратите внимание на .$rowpage[ttype]. - пытаюсь достать той же травы.

Но содержимое файла точно не причем - ибо я перевел все переменные из строки ручками в массив $_GET и вызвал файл без командной строки.

Все в принципе сработало - дальше пошли уже иные косяки.

Но теперь уже интересен сам принцип - где запретить/разрешить выполнение скрипта с командной строкой?

И почему в Денвере на это стоит добро а у хостера нет?
 

С.

Продвинутый новичок
Нельзя механически заменить вызов PHP файла через HTTP на напрямую через файловую систему. Результат будет принципиально разный.

Либо переписывать файлы (но надо знать в чем причина, может они целенаправленно были изолированы), либо брать хостинг, где разрешено такое.
 
Сверху