[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как ЭТО работает?
sergeiss
Итак, задача простая. Есть скрипт, который работал на некоем сервере. На новом сервере он работать отказался. Моя задача была реанимировать скрипт, чтобы он заработал на новом сервере.

Старый сервер: ПХП 5.3.6, Апач 2.2.17
Новый сервер: ПХП 5.5.12, Апач 2.4.9.
Оба сервера работают под Линуксом.

В скрипте было сделано следующее:
1. Во всех ссылках, где нужна передача параметров, написано так (обращаю внимание на знак "плюс"!):
echo "<TD><A HREF=\"index.php?site_edit+$row[id]+index.php\"> ".$row['name']." </A></TD>";
2. Там, где эти параметры нужно анализировать, используются переменные $argc и $argv[].

И вот теперь вопрос: как эта ядреная смесь работает, если п.2 вообще только для использования с командной строкой? Да и п.1 тоже не понятен, как из этих плюсов получаются различные части?
На новом сервере из такого адреса получается ГЕТ параметр с ключом 'site_edit_10_index_php'. И нету никаких $argc & $argv[], что совершенно логично.

Итак, вопрос знатокам: за счет чего это всё работает на старом сервере? Сразу говорю, что мне ответ не известен smile.gif, но хотелось бы понять.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
killer8080
Цитата (sergeiss @ 12.05.2014 - 22:30)
Итак, вопрос знатокам: за счет чего это всё работает на старом сервере?

нужно включить директиву register_argc_argv и всё заработает smile.gif
sergeiss
Цитата (killer8080 @ 12.05.2014 - 23:51)
нужно включить директиву register_argc_argv и всё заработает

Сорри, не написал сразу... Это было первое, что я проверил. phpinfo() показывает, что на обоих серверах эта штуковина включена.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
sergeiss
И вот еще несуразность, о коей я тоже не написал, сорри...

$argv[0] должно содержать имя скрипта (если уж полноценно используется), но в работающем коде используется в качестве $argv[0] первая величина, идущая после знака вопроса.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
killer8080
ну сделай такой маленький багфикс
$argc = $_SERVER['argc'];
$argv = $_SERVER['argv'];

Цитата (sergeiss @ 13.05.2014 - 01:39)
$argv[0] должно содержать имя скрипта (если уж полноценно используется), но в работающем коде используется в качестве $argv[0] первая величина, идущая после знака вопроса.

так и должно быть, это же не CLI.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.