为什么我的PHP cron脚本不会播放声音?

Jef*_*ald 7 php linux audio bash cron

我正在制作一个小型应用程序按时间表响铃,可以从网站上更新.一切都运行良好,除了作为cron作业安排的脚本在脚本运行时不会播放声音.我已经向脚本添加了输出管道和echo命令,以验证cron是否正在运行它,但播放声音的部分不起作用.从CLI手动运行时,脚本按预期工作.

该脚本根据时间表提取一天中每个时段的时间和声音文件,然后将与声音文件关联的时间与当前时间进行比较 - 如果匹配,它将

exec("/usr/bin/aplay /var/www/site/".$soundfile);
Run Code Online (Sandbox Code Playgroud)

然后Cron计划在上学期间每分钟运行一次这个脚本:

* 8-16 * 1-6,9-12 1-5 root /usr/bin/php -f /var/www/site/scripts/playsound.php > /dev/null
Run Code Online (Sandbox Code Playgroud)

同样,如果我在安排声音时手动运行脚本,声音将通过连接的扬声器播放.当我有测试代码回显到屏幕或输出到输入的文件时,cron会将输出转储到文件中,确认它按计划运行脚本.它只是不会播放脚本的声音部分.

我检查了所有权限,因为其他一切正常,它们似乎是准确的.我甚至可以编写一个简单的BASH脚本来让Cron按计划播放声音,因此系统似乎有正确的组成员资格来访问脚本和声音文件.我已经转出exec()shell_exec(),仅使用命令以及绝对路径的命令审判,cron作业计划以root身份运行.仍然无法弄清楚为什么这个小功能不幸对这个程序的成功如此重要将无法奏效.

任何意见是极大的赞赏.

Bin*_*kar 0

不要设置为 cron,而是使用php 间隔javascript(异步 - ajax)来调用预期的 php 文件。我认为这会解决你的问题。

cron 作业在服务器中执行,它不会向您的浏览器抛出任何输出。

Cron Job 适合以特定时间间隔发送通知/邮件、更新/插入数据库。

根据您的要求,您必须通过浏览器运行脚本。