我有一个脚本.sh
,里面有一个curl命令:
curl --digest "http://xxxxxxx.xxx/mail.php?email=xxxx@xxx.xx";
从终端这很好用:
./script.sh #(mail arrives in my box)
从 PHP 这很好用:
shell_exec('./phpsc.sh'); // (mail arrives in my box)
从终端这很好用:
at -f phpsc.sh now + 5 minute
# (job created, mail arrives in my box after 5 minutes)
从 PHP 开始,这将不起作用:
shell_exec('at -f phpsc.sh now + 5 minute'); //:( :(
即使我将at
命令放入脚本并从 php 运行脚本,at
命令也会被忽略:(
我已经找到了解决方案,
我从/etc/at.deny 中删除了 www-data,现在"at"comand 在 PHP 中工作正常(sell_exec)
我知道有时需要使用source
来调用环境变量。
这是你应该尝试的(如果你使用 ksh 以外的东西,请适应):
shell_exec('source ${HOME}/.kshrc ; at -f phpsc.sh now + 5 minute');
在 CentOS 7 中,我不得不在/etc/at.allow 中添加 'apache'。