如果你的腳本下(Apache或一個CGI用戶)運行的帳戶沒有shell訪問,在將無法正常工作,因爲失去作用的外殼(如/ bin中/壞)將嘗試運行命令稍後的。
檢查,如果你可以Exec的東西:
$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來運行命令,後來在 - Permision在php中運行exec函數 - 沒有任何問題/etc/at.{deny,allow}
這基本上意味着(我猜)你需要一個運行在php-cgi中的PHP切換到「真實」帳戶。
我現在唯一能想到的其他解決方案是在Web服務器上創建需要的腳本,並使用wget在您有權訪問的計算機上運行at作業。
echo "wget -q http://myserver.mydomain/my/atscript" | at now + 1 minute
人們實際上使用類似cron的行爲的構造。嘿,我甚至可能會在我的託管服務上設置類似的服務:-)
tnx ThiefMaster,使用shell_exec我的error_log顯示「由於安全原因已禁用了shell_exec()」。我不確定如果啓用它會有什麼影響。 –
通常共享的託管公司通過php.ini禁用它,因爲它們不希望PHP應用程序運行shell命令。通常他們的安全性很差(所有客戶都在同一個用戶組中,因此只受到open_basedir等其他客戶文件的限制),而且shell命令明顯規避了這種限制) – ThiefMaster