PHP (Apache) не выполняет команду BASH (At + Wget) - PullRequest
1 голос
/ 13 января 2020

Итак, ребята, у меня есть следующий код:

<?php
  $url  = "http://example.com/filetorun.php";
  $time = date('g:i A d.m.Y', $res['sometime']); 
  echo `echo "wget --spider {$url}" | at -M {$time}`;
?>

Основная идея заключается в том, чтобы в определенное время c выполнить какой-то URL для выполнения некоторых полезных для меня операций.

Что происходит в терминале?

Когда я запускаю этот bash код. Он хорошо работает, давая мне вывод, подобный следующему:

warning: commands will be executed using /bin/sh
job 59 at Mon Jan 13 17:12:00 2020

Что происходит в /var/log/apache2/error.log, когда я запускаю свой скрипт php?

Он получает этот вывод.

А как насчет atq?

Я вижу работу там, только когда создаю ее через Терминал. Когда я создаю его из php -скрипта, я не могу этого сделать.

Что я пытался сделать?

Я добавил пользователей в / etc / at.allow и удалил их из /etc/at.deny

1 Ответ

0 голосов
/ 26 января 2020

Не так много деталей, чтобы включить go, но я обращаю ваше внимание на это требование at:

Значение переменной среды SHELL во время вызова будет определить, какая оболочка используется для выполнения команд at job. Если SHELL не установлен при вызове at, будет использоваться оболочка входа пользователя; в противном случае, если SHELL установлен при вызове at, он должен содержать путь к исполняемому файлу интерпретатора оболочки, который будет использоваться для запуска команд в указанное время.

Имеет ли пользователь веб-сервера логин определен? getent passwd или grep /etc/passwd для определения. Несмотря на это, я предлагаю настроить оболочку для использования в самой команде, чтобы избежать проблем, когда кто-то изменяет оболочку по умолчанию вызывающего пользователя.

Если это не проблема, нам, вероятно, понадобятся более подробные сведения.

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