php - 从 php 在计算机上运行脚本

我试图从 php 执行 shell 命令但没有成功。目标是通过互联网(例如我的手机)打开/关闭我的计算机/服务器的音乐播放器。这是我能做的:

我有一个非常简单的文件“play.sh”: 代码:

xdotool key XF86AudioPlay;
echo "switched";

如果我运行它 ./play.sh,就可以了(音乐播放器打开/关闭)

然后我有另一个非常简单的 php 文件“play.php”: 代码:

<?php echo shell_exec("./play.sh"); ?>

这两个文件在我服务器的主文件夹中,它是我电脑的一个分区。 (我正在使用 lampp)但是我的电脑正在播放音乐。

但是当我访问 localhost/play.php 时,我可以看到“switched”显示 sh 文件已执行,但声音没有关闭。

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

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

有人有想法吗?是不是apache的配置..?

谢谢!

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

xhost + local:www-data

谢谢大家的回复

最佳答案

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

https://stackoverflow.com/questions/9057076/

相关文章:

.net - 如何设置 "user cannot change password"AD属性

python - subprocess.Popen 不是线程安全的?

ruby-on-rails - 如何从 Rails 中的模型继承,其中一种类型在不交织的情况下扩展另

wpf - 语音识别 - 未处理的异常 - 未找到 SAPI,即使已安装

php - php中var-export函数的反义词是什么?

cuda - 在 Cmake 项目中指定 openmp CUDA 标志

rest - 强制 web api 消费者接受响应中的新字段

wcf - 检查权限的最佳位置在哪里?

r - ggplot 中的条形图,每组条数不同

google-chrome - 使用 TFS/NUnit 通过构建过程执行时,使用 Google C