我需要使用PHP运行unix中的at
命令。如何实现呢?对于我所做的事情,curl
不是一个选项。如果我尝试简单地运行exec('at')
,它没有任何响应。但是,如果我使用ssh运行它,它就能正常工作。所以我猜这是权限/路径问题。
请记住,“at”命令从标准输入中接收其脚本,因此您需要使用popen()打开到at命令的管道。将您的命令写入该管道并关闭它。当您打开管道时,您希望“at”运行命令的时间应该是命令行的一部分。
<?php
$r = popen('/usr/bin/at noon');
fwrite($r,"ls -l");
pclose($r);
?>
我想你在命令行中输入了一些真正的at
命令,因为只有at
是无效语法。你的命令应该包括一些参数。
然而,也许你的问题是at
不在$PATH
中。尝试使用完整路径运行at
,通常是/usr/bin/at
。可以通过whereis at
检查。
cat /etc/passwd
命令来检查apache用户使用的shell,如果是bin/false
,则不能从apache用户运行“at”命令。并将其作为php exec()函数的参数传递。export SHELL=/bin/bash; echo "shell command" | at :time: :date:
popen
中使用 "mode",就像这样:$r = popen('/usr/bin/at noon','r');
- Ajax