[英]starting tightvnc viewer via php
我正在尝试使用PHP在Raspberry Pi上启动vncviewer,其中RPi是客户端,我的VNC服务器运行MS Windows。
在PHP中,我正在使用此脚本启动vncviewer
$cmd="echo password | vncviewer -autopass " .$ip;
shell_exec($cmd);
当我仅从RPi运行shell脚本时,它起作用,但是当从PHP中尝试它时,出现此错误:
Error: Can't open display:
有没有解决此错误的方法?
如果使用X11,则可能需要设置DISPLAY
变量。
需要在X11服务器(显示器)上打开窗口的X11客户端(程序)使用此变量来确定客户端应在哪里找到服务器。 这里使用客户端/服务器模型,因为服务器向客户端提供了窗口显示功能。
X包括在网络上的远程服务器上显示窗口的功能,尽管99.9%的时间将您的内容显示在运行该程序的计算机的主显示屏上,所以通常是DISPLAY=localhost:0.0
。
要注意的是,如果未设置DISPLAY
,则即使在同一台计算机上运行X服务器,程序也不知道在何处打开其窗口。 而且,当程序由cron
或系统启动脚本运行,或者实际上是X本身未启动的任何程序(包括由Web服务器运行的PHP脚本)运行时,它们通常没有将DISPLAY
设置为任何内容。
所以..正如您在评论中指出的那样,设置DISPLAY=:0
将告诉vncviewer将窗口发送到哪里。 这是DISPLAY=localhost:0.0
。 主机名(如果排除的话)假定为localhost。 并且末尾的.0
表示屏幕号,它也默认为零。 查看X文档以获取更多详细信息 。
就像您在注释中已经指出的那样,在X运行的环境中(即DISPLAY
已设置),您可能需要运行xhost +
才能允许X不能启动的程序打开窗口。
要在PHP中设置环境变量,请使用以下方法:
putenv("DISPLAY=:0");
在启动VNC的代码之前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.