dbus PHP,没有$DISPLAY的X11,Dbus PHP无法启动dbus-daemon
$dbus = $dbus = dbus_bus_get(DBUS_BUS_SESSION);
$message = new \DBusMessage(DBUS_MESSAGE_TYPE_SIGNAL);
$message->setDestination("org.freedesktop.DBus");
$message->setAutoStart(true);
$dbus->sendWithReplyAndBlock($message, 1);
运行我的代码时,出现以下错误:
Warning: dbus_bus_get() [function.dbus-bus-get]: failed to create dbus
connection object [Unable to autolaunch a dbus-daemon without a
$DISPLAY for X11] in […COI/GTK/Notify.php on line 39
这是我第一次使用与dbus相关的任何东西,而我很迷路.
我的目标是类似于在终端(在Ubuntu 11.10上)执行以下操作时所发生的效果:
/usr/bin/notify-send -t 2000 'title' 'message'
最初我确实使用了通知发送& exec,但是当我找到GREE Dbus扩展时切换了,因为我认为它可以提供更简洁的界面.另外,仅当我将apache用户更改为与当前登录的用户相同时,notify-send才能正常工作-并非理想的解决方案.
谁能告诉我要达到我想要的结果需要进行哪些修改,或者告诉我我想做的事实际上是否不可能?
或者,还有其他方法我应该这样做吗?
解决方法:
Dbus不喜欢在没有X的命令行环境中运行.这很令人沮丧,但这就是我在python中写的重写它的内容.归结为设置两个环境变量.
def run(self):
os.environ['DBUS_SESSION_BUS_ADDRESS'] = "unix:path=/run/dbus/system_bus_socket"
os.environ["DISPLAY"] = ":0"
try:
bus_name = dbus.service.BusName(INTERFACE,
bus = dbus.SessionBus())
dbus.service.Object.__init__(self, bus_name,
'/com/your/path/here')
gobject.MainLoop().run()
except Exception, E:
f = file('/tmp/bus.log', 'a')
f.write(str(E))
f.close()
编辑:我忘记了在命令行上运行dbus的另一种非常有用的方法
eval 'dbus-launch --auto-syntax' [command]
我在树莓派上使用它来运行我的自定义dbus守护进程. dbus-launch –auto-syntax是在bash中输出适用于dbus的环境变量和文件的命令. eval命令将获取该输出并对其进行评估,以便您的命令将与这些环境变量一起运行.
一个简单的测试将是运行以下内容:
eval 'dbus-launch --auto-syntax' python /usr/bin/my-dbus-daemon.py
eval 'dbus-launch --auto-syntax' qdbus org.dbus.method /org/dbus/method/test
标签:dbus,php
来源: https://codeday.me/bug/20191101/1987149.html
dbus PHP,没有$DISPLAY的X11,Dbus PHP无法启动dbus-daemon相关推荐
- Linux中使用gcp拷贝报错:dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotSupported:
1 在linux中使用gcp拷贝的时候报错 Linux中使用gcp拷贝报错:dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NotS ...
- ubuntu DBUS 收集
ubuntu DBUS 收集 libdbus-1.so.3.19.11 是dbus-1.12.16.tar.gz 包编译出来的 参考文档: https://www.freedesktop.org/wi ...
- D-bus学习笔记一 基础知识篇
D-Bus是GNOME和KDE环境中广泛使用的进程间通信的软件,D-Bus允许用户做方法调用或者捕获从别的程序发送的信号,从而达到进程通信的目的. Dbus 使用指南 1.D-Bus 是什么? d-b ...
- Maemo 中交叉编译D-BUS 1.2.1
Maemo 中交叉编译D-BUS 1.2.1 , 1 登陆到maemo的ARM环境下 2 配置dbus, 这里是为arm做编译,所以我们选择--host=arm-linux, 另外一个重要的是ac_c ...
- DBUS基础知识(非常全面)
DBus作为一个轻量级的IPC被越来越多的平台接受,用于进程间通信或进程与内核的通信. DBus进程间通信主要有三层架构: 1.底层接口层:主要是通过libdbus这个函数库,给予系统使用DBus的能 ...
- IPC进程间通信 D-Bus(Desktop Bus)快速入门(以libdbus-glib库为例)
文章目录 一.D-Bus简介 1.D-Bus简介 2.不同IPC通信方式比较 3.D-Bus特性 二.D-Bus架构 2.D-Bus接口层 3.D-Bus总线层 测试demo 4.D-Bus封装层 三 ...
- 基于DBus的进程间通信(IPC)
原文地址:http://sy198704.is-programmer.com/posts/33060.html 最近在研究进程间通信,linux下进程间通信的方式主要有Pipe(管道),FIFO(命名 ...
- dbus的代码范例 linux_linux-将结构传递给dbus方法的工具?
gdbus应该可以解决问题.尝试以下操作: gdbus call --session --dest com.example.MyTest --object-path /com/example/MyTe ...
- DBus glib 各数据类型接收与发送详解—C语言(3)
DBus glib 各数据类型接收与发送详解-C语言(3) 动机 前置知识 正文 Python 测试服务 使用 C 实现复杂数据类型的传递 DICT_DICT ObjectPath_Dict_Stru ...
最新文章
- chord协议模拟实现_C#.NET和单片机串口通信实现监控单片机数字量输入继电器输出模拟量输入模拟量输出...
- 如果两个对象具有相同的哈希码,但是不相等的,它们可以在HashMap中同时存在吗?...
- Shell 脚本知识回顾 (一) —— 基础篇
- 前端学习(1310):http协议
- 开启NLP新时代的BERT模型,真的好上手吗?
- 51单片机计算器_基于51单片机的倒计时温度检测报警器
- Win7系统C盘空间不足
- Arcgis中按照cass标准分幅图框进行批量正射影像DOM分幅裁剪并命名
- 风力摆控制系统2015年全国大学生电子设计竞赛B题
- Kali 安装 xmapp、DVWA
- Google Map Web服务API
- 怎么删除日历每日重复提醒事项
- Android学习笔记七之ContentProvider
- 【优化算法】简述灰狼优化算法(GWO)原理
- 设计水杯,门锁的测试用例
- STM32学习之ILI9341控制显示屏输出(一)
- 3月9日—3月13日四年级课程表
- java qq邮箱服务器端口_spring mail借助qq邮箱服务器发送邮件
- Linux下ffmpeg添加 x265
- leaflet-editable