我正在研究一個小型應用程序,以按計劃響鈴,可以從網站更新。一切工作都很好,除非腳本運行時按計劃的cron作業腳本不能播放聲音。我已將輸出管道和回顯命令添加到腳本以驗證cron正在運行它,但播放聲音的部分不起作用。從CLI手動運行時,該腳本按預期工作。爲什麼我的PHP cron腳本不能播放聲音?
腳本提取時間和日程的每一天的週期聲音文件,然後比較與當前時刻相關聯的聲音文件的時間 - 如果它是一個比賽,它會
exec("/usr/bin/aplay /var/www/site/".$soundfile);
然後
cron是定於在校期間運行此腳本每分鐘:
* 8-16 * 1-6,9-12 1-5 root /usr/bin/php -f /var/www/site/scripts/playsound.php > /dev/null
再次,如果我手動運行該腳本時有聲定,聲音播放通過連接的揚聲器。當我有測試代碼回顯到屏幕或輸出到輸入的文件時,cron會將輸出轉儲到文件中,確認它正在按計劃運行腳本。它只是不會播放腳本的darn聲音部分。
我檢查了我的所有權限,因爲其他所有的工作都是正確的。我甚至可以編寫一個簡單的BASH腳本來讓Cron按計劃播放聲音,所以看起來系統具有正確的組成員身份以訪問腳本和聲音文件。我已將exec()
換爲shell_exec()
,嘗試使用命令以及命令的絕對路徑,並且cron作業被安排爲以root用戶身份運行。仍然無法弄清楚爲什麼這個不幸對這個程序成功至關重要的小功能將無法工作。
任何意見非常感謝。
這似乎更像是一個不同的SE網站的問題。對於Ubuntu,這裏有一個答案:http://askubuntu.com/questions/530048/ubuntu-14-04-and-playing-songs-from-cron可能有助於其他nix口味也許。 – developerwjk
嘗試將其添加到exec:'exec('...>/tmp/cronlog 2>&1')'並檢查'/ tmp/cronlog'日誌文件是否有錯誤。如果'aplay'需要X,則需要確保root可以訪問活動的X會話(請參閱'xhost'命令)。您可能想要將具有活動會話的用戶用於cron作業。 – fejese
這可能有所幫助:http://stackoverflow.com/a/22744360/1163786 - 一個建議:不要在調試cronjob問題時抑制錯誤。提高日誌記錄級別。 –