在 nginx/php-fpm 下运行的 PHP 脚本中,我可以使用以下 PHP 代码执行任何 X 程序:
shell_exec("DISPLAY=:0 /usr/bin/nohup '{$command}' > /dev/null 2>&1 &");
这将在我的桌面上打开 X 程序,PHP 脚本将继续并完成。即使 PHP 脚本完成后,X 程序仍将保持打开状态。
它适用于我尝试过的每个 X 程序(包括:mpv、kate、konsole、k3b 等),但不适用于 Dolphin。当尝试以这种方式运行 Dolphin 时,它甚至根本不会出现,并且屏幕上或我能找到的任何日志中都不会出现错误。
Dolphin 的执行方式是否存在与此相关的不同之处?与套接字/用户/后台进程或类似的东西有关?
我已经检查了以下内容:
- 尝试仅使用二进制名称(dolphin)和完整路径(/usr/bin/dolphin) - 无论如何,所有其他程序都可以使用这两者,所以似乎不是 $PATH 问题
DISPLAY=:0 /usr/bin/nohup '{$command}' > /dev/null 2>&1 &
在 Konsole shell 中执行相同的命令适用于所有内容,包括 Dolphin- PHP 错误日志中没有任何内容,并且我已启用所有错误级别
- 我在其他 Dolphin 窗口打开时和它们全部关闭时都尝试过(并确认没有 Dolphin 进程仍在运行)
- Xorg 日志中也没有任何内容
或者也许有一些类似但不同的 PHP 代码适用于 Dolphin?