[英]PHP shell_exec won't work with gnome
在終端窗口中,運行alert 9
給我一個彈出窗口,說9
但是,在shell_exec
運行alert 9
不會產生任何結果。
我應該注意些什么?
只需提及:其他命令都無法與GUI交互。 我正在使用gnome 3.16.3
更新
我的具體目標是使用gnome環境運行xdotool命令。 ( xdotool key ctrl+shift+u
)
alert
不是標准命令,至少在RedHat , Solaris和AIX上不是這樣,因此您必須在問題中提及它是專有命令/程序
您的alert
腳本/程序不考慮刷新標准或文件輸出中的文本數據,因此您不能使用pipe |重定向。 ,或redirect > ,最后,PHP函數shell_exec()
可以捕獲任何內容
也許您可以重定向圖形數據(我不確定),但是通常,圖形服務器會使用它
alert
不是命令,而是notify-send
的別名。 別名僅在交互式外殼程序中加載,因此測試shel_exec
並不是最佳選擇。
這兩個命令與php-cli一起工作良好:
$ php -r "shell_exec('notify-send 9');"
$ php -r "shell_exec('xdotool key ctrl+shift+u');"
第一個彈出通知區域中的9,最后一個輸出下划線為'u'。
帶有mod_php的Apache是守護進程,它是init
子進程,它對xserver一無所知。 例如,如果您從xserver 內的終端運行php內置Web服務器,例如$ php -S 0:8080
則它將按預期工作。
我相信PHP會啟動一個不了解您的X11環境的shell,您需要設置$DISPLAY
環境變量。 嘗試對shell_exec進行以下修改:
shell_exec("DISPLAY=\":0\" alert 9");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.