1

我试图在某些情况下显示通知。我看到你可以用 system() 函数做到这一点。除了我不能让它工作;)。

error_reporting(E_ALL);
system("notify-send 'Text here?'");
system('notify-send "Text here?"');

有人可以告诉我我做错了什么吗?还是我的设置错误?我想用 notify-send 和 PHP 在 Ubuntu 上创建通知

问候

4

3 回答 3

2

好的,即使这有点解决了,但我想在这里添加一些注释/信息,
据我所知,问题应该是运行 PHP 的用户与运行桌面会话的用户不同(gnome/kde /etc),因此 PHP 可执行文件无权在该屏幕上显示通知。
对我来说,我通过使 PHP 可执行文件在拥有会话的同一用户下运行来解决它(例如,如果我的用户名被调用abc,我将 PHP 设置为在同一abc用户下运行,我还必须使用导出显示export DISPLAY=:0
所以我的整个 exec/system 调用是这样的

exec("export DISPLAY=:0; notify-send 'title' '$message' ")
于 2013-04-22T17:26:19.427 回答
0

我将导出 DISPLAY 方法变成了 /usr/bin 脚本。我通过远程 ssh 对系统进行了测试,并在 bash 脚本/crons 中成功使用了它。 http://pastebin.com/h11p2HtN 我很好奇的是如何在登录屏幕上显示桌面通知。显示一些有关初始化脚本的信息会很好。

于 2013-11-23T07:58:33.790 回答
-2

我试图让它与 php 一起工作,但我在这里看到的每个解决方案都很糟糕,要么以您的用户身份运行 apache,要么导出显示等等。

我在 node.js 中编写了这个小脚本,优点是由桌面用户运行,不需要导出额外的环境变量:

  1. 安装 node.js(应该很容易下载、配置、制作、安装)
  2. 为这个应用程序创建一个目录,例如 mkdir ~/message
  3. 安装 express-framework: cd ~/message ; npm 安装快递
  4. 创建脚本
  5. 运行它...“node ./script-name.js”

现在您可以触发类似 localhost:5555/?message=Hello+World 的请求

为我工作,在我浪费了几个小时试图用 apache、php、cgi 或其他东西来获得这个之后。

脚本:

var express = require('express');
var app = express();
var sys = require('sys');
var exec = require('child_process').exec;
var child;

app.get('*', function (req, res) {
  res.contentType('text/html');
  res.send(200, '');
  child = exec("/usr/bin/notify-send 'Message' '" + req.query.message + "'", function (error, stdout, stderr) {});
});

app.listen(5555);
于 2014-03-31T14:42:35.683 回答