スクリプトを実行するアカウント(Apacheまたはcgiユーザー)にシェルアクセスがない場合、機能していないシェル(/ bin / badなど)が後でコマンドを実行しようとするため、atは機能しません。
何かを実行できるかどうかを確認します。
$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");
したがって、次のものが必要です。-後でコマンドを実行するためのシェル-exec関数を実行するためのphp内の許可-/ etc / at。{deny、allow}によって作成された問題はありません
これは基本的に(おそらく)php-cgiで実行されるPHPが「実際の」アカウントに切り替えられる必要があることを意味します。
私が今考えることができる他の唯一の解決策は、Webサーバーで必要なスクリプトを作成し、wgetを使用してアクセスできるマシンでatjobを実行することです。
echo "wget -q http://myserver.mydomain/my/atscript" | at now + 1 minute
人々は実際にcronのような振る舞いのためにそのような構造を使用します。ねえ、私は私のホスティングサービスでそのようなもののためのサービスをセットアップするかもしれません:-)