Вызов PHP-документа с использованием SSH включает переменную get - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть следующее в PHP-документе, который я вызываю из задания cron.

if (is_file($docRoot . $row['cron_action_script_path'])) {

    system("php " . $docRoot . $row['cron_action_script_path'] . $row['params']);
}

Однако я получаю сообщение об ошибке Could not open input file: /path/to/file.php?params=1

Но я получаюпосле оператора if is_file('/path/to/file.php')

Похоже, что есть проблема с включением переменных get в вызовы SHH для PHP-документа.

Есть ли что-нибудь вокруг этого?Мне нужно иметь возможность динамически вызывать мои параметры каким-либо образом.

Ответы [ 3 ]

4 голосов
/ 19 сентября 2011
if (is_file($docRoot . $row['cron_action_script_path'])) {
    $_GET['params'] = $row['params'];
    include $docRoot . $row['cron_action_script_path'];
}
3 голосов
/ 19 сентября 2011

Вы звоните в php CLI и пытаетесь использовать данные QUERY STRING, специфичные для веб-сервера. Вам нужно будет либо обновить скрипт, чтобы он принимал параметры, либо вызвать его с помощью такой программы, как lynx, curl или wget

Так что системный вызов должен выглядеть примерно так:

system("wget http://yourdomain.com/path/to/file.php?params=1 > /dev/null");

Который должен затем выполнить этот скрипт, используя веб-сервер, который разрешил бы QUERY STRING.

EDIT:

Специально для использования ваших переменных: (Обратите внимание, что после .com может быть косая черта)

system("wget http://yourdomain.com" . $row['cron_action_script_path'] . $row['params'] . " > /dev/null");
1 голос
/ 19 сентября 2011

Попробуйте is_readable вместо is_file. Файл может существовать без возможности чтения текущим пользователем.

Передача таких параметров не сработает. Вы не можете делать $_GET переменные в командной строке. Посмотрите на как PHP ожидает и обрабатывает аргументы командной строки .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...