你好,我正在尝试在我的PHP脚本中执行一个shell命令,但是它不起作用。我的PHP脚本:
//I save the Order
$holdedOrder->save();
$id = $holdedOrder->id;
$old_path = getcwd();
chdir(__DIR__.'/../');
$scriptFile = 'anacron_job_unhold_order.sh';
$bool = file_exists($scriptFile);
//$bool is true !
//this command works in shell but not in here do not know why
$s = shell_exec("echo \"/usr/bin/bash $scriptFile $id\" | /usr/bin/at now +$when");
chdir($old_path);
return [$s,$bool];
$具有有效值4 hours
或4 days
...该命令将是:
echo bash anacron_job_unhold_order.sh 29 | at now +1 minutes
输出为空。尝试使用exec()
返回127个代码
编辑:我从/etc/at.deny中删除了www-data,仍然是同样的问题
命令shell_exec("echo \"/usr/bin/bash $scriptFile $id\" | /usr/bin/at now +$when");
可能是引起此问题的原因,您应该仔细研究how at
works。
命令应该类似于
at
要从命令而不是STDIN向at [options] [job...]
分配作业,请使用at
heredoc syntax
因此,PHP代码应该类似于:
heredoc syntax