Вызовите 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 ожидает и обрабатывает аргументы командной строки.