【问题标题】:Ubuntu - PHP | notify-send looks different when called through PHPUbuntu - PHP |通过 PHP 调用时,notify-send 看起来不同
【发布时间】:2018-05-29 16:28:20
【问题描述】:

我目前正在构建一个 php 命令行应用程序,我利用 notify-send 在我的 Ubuntu 17.10 中发送通知,现在 gnome 附带。

通知看起来很好,当我在终端中手动运行 cli 应用程序时它们应该如此。 (在顶部,在通知中心)

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

我正在使用 exec('notify-send tas) 在我的应用中调用通知发送

我对外观略有不同的通知的问题是我无法点击超链接!另一个支持点击超链接打开网页。

这里出了什么问题?

【问题讨论】:

  • 我自己还没有找到解决方案,但似乎与设置正确的 DBUS_SESSION_BUS_ADDRESS 环境变量有关。
  • 我正在使用 bash 并将这 3 行添加到我的脚本中,但我不确定这是否是正确的答案。 PID=$(pgrep -n gnome-session)eval "export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)"export DISPLAY=:0
  • @Davorin 嗨,我设法解决了这个问题。不幸的是,我不记得确切的解决方案,但这里是那个项目github.com/SapneshNaik/…,如果你有兴趣知道我是如何做到的,请仔细阅读。
  • 感谢 Sapnesh,查看您在 src/scripts/notify-send.sh 中的 bash 代码,这似乎是一个类似的解决方案。您应该发布该代码作为您问题的答案,它可能对下一个人很有价值。
  • @Davorin。完成!,感谢您的建议

标签: php ubuntu cron gnome notify-send


【解决方案1】:

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

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

bash 脚本:


#!/bin/bash
#
# This script shows how to send a libnotify message
# to a specific user.
#
# It looks for a process that was started by the user and is connected to dbus.

# process to determine DBUS_SESSION_BUS_ADDRESS
USER_DBUS_PROCESS_NAME="gconfd-2"

NOTIFY_SEND_BIN="/usr/bin/notify-send"

TITLE=$1
MESSAGE=$2

# get pid of user dbus process
DBUS_PID=`ps ax | grep gconfd-2 | grep -v grep | awk '{ print $1 }'`

# get DBUS_SESSION_BUS_ADDRESS variable
DBUS_SESSION=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/$DBUS_PID/environ | sed -e s/DBUS_SESSION_BUS_ADDRESS=//`
# echo $DBUS_SESSION;

# send notify
 DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION $NOTIFY_SEND_BIN "$TITLE" "$MESSAGE"

PHP 代码:

$command = sprintf('/path/to/bash_script.sh "%s" "%s" 2> /dev/null', $title, $message);
system($command);

P.S: 这是在命令行应用程序中使用的,每当在 stackoverflow.com 上发布新问题时都会发送系统通知! (与您的标签匹配的问题)

你可以在这里查看:https://kerneldev.com/2017/12/27/so-notify-a-stack-overflow-question-notifier/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多