У меня есть следующий документ 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')
Таким образом, похоже, что есть проблема с включением переменных в вызовы SHH для PHP-документа.
Во всяком случае, вокруг? Мне нужно иметь возможность динамически вызывать мои параметры каким-то образом.
if (is_file($docRoot . $row['cron_action_script_path'])) { $_GET['params'] = $row['params']; include $docRoot . $row['cron_action_script_path']; }
Вы звоните в CLI php и пытаетесь использовать данные QUERY STRING
, которые являются специфическими для веб-сервера. Вам потребуется либо обновить сценарий для приема параметров, либо вызвать его с помощью такой программы, как lynx
, curl
или wget
Поэтому сделайте системный вызов примерно так:
system("wget http://yourdomain.com/path/to/file.php?params=1 > /dev/null");
Затем он должен выполнить этот скрипт с помощью веб-сервера, который позволит QUERY STRING
.
РЕДАКТИРОВАТЬ:
Возможность использования ваших переменных: (Обратите внимание, что после компиляции может потребоваться слэш).
system("wget http://yourdomain.com" . $row['cron_action_script_path'] . $row['params'] . " > /dev/null");
Попробуйте is_readable
вместо is_file
. Файл может существовать без чтения вашим текущим пользователем.
Однако такие параметры не будут работать. Вы не можете использовать переменные $_GET
в командной строке. Посмотрите, как PHP ожидает и обрабатывает аргументы командной строки .