PHP系统通知发送

时间:2013-04-21 15:22:00

标签: php linux ubuntu

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

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

有人可以告诉我我做错了什么吗?或者我的设置错了?我想使用notify-send和PHP

在Ubuntu上创建通知

问候

3 个答案:

答案 0 :(得分:2)

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

exec("export DISPLAY=:0; notify-send 'title' '$message' ")

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

我尝试使用php,但我在这里看到的每个解决方案都很糟糕,无论是作为用户运行apache还是导出显示器等等。

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

  1. 安装node.js(应该很容易下载,配置,制作,制作安装)
  2. 为此应用创建目录,例如: G。 mkdir~ / message
  3. 安装express-framework:cd~ / message; npm install express
  4. 创建脚本
  5. 运行它......“node ./script-name.js”
  6. 现在您可以触发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);