我尝试从php执行shell命令失败了。目标是通过互联网(例如我的手机)打开/关闭我的计算机/服务器的音乐播放器。这是我能做的:
我有一个非常简单的文件“play.sh”: 代码:
xdotool key XF86AudioPlay;
echo "switched";
如果我运行它./play.sh,它可以工作(音乐播放器打开/关闭)
然后我有另一个非常简单的php文件“play.php”: 代码:
<?php echo shell_exec("./play.sh"); ?>
这两个文件位于我的服务器的主文件夹中,该文件夹是我的计算机的分区。 (我正在使用lampp)但是我的电脑正在播放音乐。
但是当我要使用localhost / play.php时,我可以看到“切换”,它显示sh文件已执行,但声音没有关闭。
我刚试过exec()
,shell_exec()
,passthru()
,system()
,..与./play.sh和/opt/lampp/.../play.php
结果完全相同,并且没有错误消息..:/
但这很奇怪,我不确定,但我认为我在计算机端运行的东西与我在服务器端运行的东西不一样。我的意思是,它就像声音在虚拟服务器上打开/关闭,但与我的电脑声音没有关联。这可能是一个解释..然后,如何从我的服务器上执行我的计算机上的脚本..?
有人有想法吗?它是apache的配置..?
谢谢!
编辑: 以下是我解决问题的方法:
xhost + local:www-data
感谢您的所有回复
答案 0 :(得分:1)
这可能是权限问题 - 请记住,当PHP运行命令时,它以 webserver 正在运行的用户身份运行,例如, www-data
或apache
或其他。如果您的音乐播放器作为您自己的个人用户运行,则当您以其他用户身份运行时,您的脚本可能无法更改它。
答案 1 :(得分:0)
Shell_exec有效。尝试将.sh脚本放入可执行文件的绝对路径
/usr/bin/xdotool key XF86AudioPlay;