lighthttp, dbus, and myapp, without X11

3.7k views Asked by At

I am running on a system without X11, 'myapp', which register a dbus server, a php app which supposed to send a message over dbus to the server.

Everything worked smother on the development machine, (with gnome, X11) but when I deployed on a server without X11, I ran on every dbus call into:

# process status 
ps ax | grep dbus
2033 ?        Ss     0:00 /usr/bin/dbus-daemon --system
2383 pts/0    S+     0:00 grep --color=auto dbus


# listing names
dbus-send --session --print-reply --dest="org.freedesktop.DBus" /org/freedesktop/DBus  org.freedesktop.DBus.ListNames  
Failed to open connection to "session" message bus: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11

# from php running with system("<above command> 2>&1"); I get same response

./myapp 
terminate called after throwing an instance of 'DBus::Error'
what():  Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Aborted
# same when calling into DBus::Connection bus = DBus::Connection::SessionBus();

If I am adding to ./.bashrc the following script

if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
    ## if not found, launch a new one
    eval `dbus-launch --sh-syntax --exit-with-session`
    echo "D-BUS per-session daemon address is: $DBUS_SESSION_BUS_ADDRESS"
fi
#reboot
ps ax |grep dbus
2023 ?        Ss     0:00 /usr/bin/dbus-daemon --system
2389 pts/0    S      0:00 dbus-launch --sh-syntax --exit-with-session
2390 ?        Ss     0:00 /usr/bin/dbus-daemon --fork --print-pid 4 --print-address 6 --session
2392 pts/0    S+     0:00 grep --color=auto dbus

then, from same shell

dbus-send --session --print-reply --dest="org.freedesktop.DBus" /org/freedesktop/DBus  org.freedesktop.DBus.ListNames 

prints my server name, but from php

system("above command"); same error, and

system ("echo system("eval 'dbus-launch --auto-syntax' dbus-send --session --print-reply --dest=\"org.freedesktop.DBus\" /org/freedesktop/DBus  org.freedesktop.DBus.ListNames  2>&1");

does not list the names.

The question is, how do join from lighthttpd the existent dbus session, or any other variants.

Thx

2

There are 2 answers

0
user2195463 On

Thx, The DISPLAY=:0 did not quite resolved the problem.

I did not recompiled dbus without X11, but I am using system bus and is OK. I have to use system bus because the lighttp server talks to a service via dbus.actualy
I enabled rights in dbus config files and is just OK.

0
Ranjit Katuri On

you have compiled dbus with x11 support. So dbus-launch will create problems. Try $ export DISPLAY=:0 and see if you are able to use dbus-launch

or directly launch the daemon $ dbus-daemon --session --print-address export the address to DBUS_SESSION_BUS_ADDRESS