如果您的脚本在其下运行的帐户(Apache 或 cgi 用户)没有 shell 访问权限,则 at 将无法工作,因为稍后将尝试运行不正常的 shell(如 /bin/bad)来运行该命令。
检查您是否可以执行任何操作:
$output = array();
exec('whoami',$output);
print_r($output);
如果这确实有效,您可以尝试类似(伪代码):
write "date > /some/dir/date.txt" in /tmp/atcmd
exec("/usr/bin/at -f /tmp/atcmd now + 1 minute");
所以你需要: - 稍后在其中运行命令的 shell - php 内的权限以运行 exec 函数 - 没有由 /etc/at.{deny,allow} 创建的问题
这基本上意味着(我猜)你需要一个在 php-cgi 中运行的 PHP 切换到一个“真实”帐户。
我现在唯一能想到的其他解决方案是在网络服务器上创建您需要的脚本,并使用 wget 在您有权访问的机器上运行 at 作业。
echo "wget -q http://myserver.mydomain/my/atscript" | at now + 1 minute
人们实际上将此类构造用于类似 cron 的行为。嘿,我什至可以在我的托管服务上为类似的东西设置一个服务:-)