我想在某些情况下显示通知。我看到你可以用system()函数做到这一点。除了我不能让它工作;)。
error_reporting(E_ALL);
system("notify-send 'Text here?'");
system('notify-send "Text here?"');
有人可以告诉我我做错了什么吗?或者我的设置错了?我想使用notify-send和PHP
在Ubuntu上创建通知问候
答案 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中编写了这个小脚本,其优点是由桌面用户运行,不需要导出其他环境变量:
现在您可以触发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);