3

我没有成功尝试从 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 文件已执行,但声音没有关闭。

我刚刚用 ./play.sh试了exec(), shell_exec(), passthru(), , ..结果完全一样,也没有错误信息.. :/system()/opt/lampp/.../play.php

但这很奇怪,我不确定,但我认为我在计算机端运行的与我在服务器端运行的不一样。我的意思是这就像声音在虚拟服务器上打开/关闭,但与我的电脑声音没有联系。这可能是一个解释..但是,如何从互联网/我的服务器在我的计算机上执行脚本..?

有人有这样做的想法吗?它是apache..的配置吗?

谢谢 !

编辑:这是我解决问题的方法:

xhost + local:www-data

感谢你的回复

4

2 回答 2

2

这可能是一个权限问题 - 请记住,当 PHP 运行命令时,它是以web 服务器运行的用户身份运行的,例如www-data,或apache其他。如果您的音乐播放器以您自己的个人用户身份运行,则您的脚本在以其他用户身份运行时可能无法更改它。

于 2012-01-29T21:48:15.807 回答
0

Shell_exec 有效。尝试将您的 .sh 脚本绝对路径放入可执行文件

/usr/bin/xdotool key XF86AudioPlay;
于 2012-01-29T21:48:31.377 回答