Php使用at命令执行bash脚本

问题描述 投票:0回答:1

你好,我正在尝试在我的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 hours4 days ...该命令将是:

echo bash anacron_job_unhold_order.sh 29 | at now +1 minutes

输出为空。尝试使用exec()返回127个代码

编辑:我从/etc/at.deny中删除了www-data,仍然是同样的问题

php shell yii2 scheduled-tasks
1个回答
0
投票

命令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
© www.soinside.com 2019 - 2024. All rights reserved.