从php在计算机上运行脚本

从php在计算机上运行脚本,php,execute,lampp,Php,Execute,Lampp,我尝试从php执行shell命令失败。目标是通过互联网(例如我的手机)打开/关闭我电脑/服务器的音乐播放器。以下是我能做的: 我有一个非常简单的文件“play.sh”: 代码: 如果我运行它。/play.sh,它就可以工作(音乐播放器打开/关闭) 然后我有另一个非常简单的php文件“play.php”: 代码: 感谢您的回复,这可能是权限问题-请记住,当PHP运行命令时,它是以Web服务器运行时的用户身份运行的,例如www-data或apache或其他。如果您的音乐播放器是以您自己的个人用户身份

我尝试从php执行shell命令失败。目标是通过互联网(例如我的手机)打开/关闭我电脑/服务器的音乐播放器。以下是我能做的:

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

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

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


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

Shell\u exec可以正常工作。尝试将.sh脚本放入可执行文件的绝对路径

/usr/bin/xdotool key XF86AudioPlay;

xdool
向X服务器发送命令。您的桌面可能正在显示器上运行
:0
-请尝试
导出显示器=:0;xDool键XF86AudioPlay
;此外,您可能需要自己运行脚本-PHP代码可能以用户
www data
或类似身份运行(只是脚本可能有一些问题)也可以尝试使用xdtool的绝对路径,它可能不在apache PATHAdd
2>&1
中以获取错误消息。要授予X权限,请使用
xhost+localhost
作为最后手段。不,我尝试使用export DISPLAY=:0;usr/bin/xdool按键XF86AudioPlay;但结果仍然是一样的,我向localhost授予了X权限,但无法工作:/2>&1的结果:未指定协议错误:无法打开显示::0创建新xdo实例失败!是的,我考虑过了,所以我把这是我的/etc/sudoers:www-data-ALL=NOPASSWD:/sbin/iptables,/usr/bin/xdoool-paul-ALL=NOPASSWD:/sbin/iptables,/usr/bin/du,/usr/bin/xdoool-apache-ALL=NOPASSWD:/sbin/iptables,/usr/bin/du,/usr/bin/xdoool,结果是一样的/
<?php echo shell_exec("./play.sh"); ?>
xhost + local:www-data
/usr/bin/xdotool key XF86AudioPlay;