Вызовите PHP документ с SSH включает переменную get

У меня есть следующее в 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 ответа

Решение
if (is_file($docRoot . $row['cron_action_script_path'])) {
    $_GET['params'] = $row['params'];
    include $docRoot . $row['cron_action_script_path'];
}

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

Так что сделайте системный вызов что-то вроде:

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

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

РЕДАКТИРОВАТЬ:

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

system("wget http://yourdomain.com" . $row['cron_action_script_path'] . $row['params'] . " > /dev/null");

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

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

Другие вопросы по тегам