Ubuntu-PHP | notify send在通过PHP调用时看起来不同

Ubuntu-PHP | notify send在通过PHP调用时看起来不同,php,ubuntu,cron,gnome,notify-send,Php,Ubuntu,Cron,Gnome,Notify Send,我目前正在开发一个php命令行应用程序,我使用gnome自带的Ubuntu17.10发送通知 当我在终端中手动运行cli应用程序时,通知看起来很好,并且应该是这样。(位于通知中心的顶部) 但是当同一个应用程序通过cron作业运行时,通知看起来完全不同,并且显示在不同的位置!(右上角) 我正在使用exec('notify-send tas) 我的问题与略有不同的外观通知是我不能点击超链接!而另一个支持点击超链接,然后打开网页 这里出了什么问题?经过大量的研究、尝试和错误。我得出了下面的解决方案

我目前正在开发一个php命令行应用程序,我使用gnome自带的
Ubuntu17.10
发送通知

当我在终端中手动运行cli应用程序时,通知看起来很好,并且应该是这样。(位于通知中心的顶部)

但是当同一个应用程序通过cron作业运行时,通知看起来完全不同,并且显示在不同的位置!(右上角)

我正在使用
exec('notify-send tas)

我的问题与略有不同的外观通知是我不能点击超链接!而另一个支持点击超链接,然后打开网页


这里出了什么问题?

经过大量的研究、尝试和错误。我得出了下面的解决方案

PHP代码将调用一个shell脚本,该脚本将实际发送
libnotify
消息

bash脚本:

#!/bin/bash
#
#此脚本显示如何发送libnotify消息
#给特定的用户。
#
#它查找由用户启动并连接到dbus的进程。
#确定DBUS_会话_总线_地址的过程
用户\u DBUS\u进程\u NAME=“gconfd-2”
NOTIFY_SEND_BIN=“/usr/BIN/NOTIFY SEND”
头衔=$1
讯息=$2
#获取用户dbus进程的pid
DBUS|u PID=`ps ax | grep gconfd-2 | grep-v grep | awk'{print$1}'`
#获取DBUS_会话_总线_地址变量
DBUS_SESSION=`grep-z DBUS_SESSION_总线地址/proc/$DBUS_PID/environ|sed-es/DBUS_SESSION总线地址=//`
#echo$DBUS_会话;
#发送通知
DBUS_会话_总线_地址=$DBUS_会话$NOTIFY_SEND_BIN“$TITLE”“$MESSAGE”
PHP代码:
$command=sprintf('/path/to/bash_script.sh“%s”“%s”2>/dev/null',$title,$message);
系统($指挥);
p.S:这在命令行应用程序中使用,每当stackoverflow.com上发布新问题时,该应用程序都会发送系统通知!(与您的标签匹配的问题)


您可以在这里查看:

我自己还没有找到解决方案,但似乎与设置正确的DBUS\u SESSION\u BUS\u ADDRESS env变量有关。我正在使用bash并将这3行添加到脚本中,但我不确定这是否是正确的答案
PID=$(pgrep-n gnome session)
export DISPLAY=:0
@Davorin您好,我设法解决了这个问题。不幸的是,我不记得确切的解决方案,但这是一个项目,如果您有兴趣了解我是如何做到的,请仔细阅读。感谢Sapnesh,查看
src/scripts/notify send.sh中的bash代码,这似乎是一个类似的解决方案。你应该把这段代码作为你问题的答案,它可能对下一个人很有价值。@Davorin。完成!,谢谢你的建议