我试图在某些情况下显示通知。我看到你可以用 system() 函数做到这一点。除了我不能让它工作;)。
error_reporting(E_ALL);
system("notify-send 'Text here?'");
system('notify-send "Text here?"');
有人可以告诉我我做错了什么吗?还是我的设置错误?我想用 notify-send 和 PHP 在 Ubuntu 上创建通知
问候
好的,即使这有点解决了,但我想在这里添加一些注释/信息,
据我所知,问题应该是运行 PHP 的用户与运行桌面会话的用户不同(gnome/kde /etc),因此 PHP 可执行文件无权在该屏幕上显示通知。
对我来说,我通过使 PHP 可执行文件在拥有会话的同一用户下运行来解决它(例如,如果我的用户名被调用abc
,我将 PHP 设置为在同一abc
用户下运行,我还必须使用导出显示export DISPLAY=:0
,
所以我的整个 exec/system 调用是这样的
exec("export DISPLAY=:0; notify-send 'title' '$message' ")
我将导出 DISPLAY 方法变成了 /usr/bin 脚本。我通过远程 ssh 对系统进行了测试,并在 bash 脚本/crons 中成功使用了它。 http://pastebin.com/h11p2HtN 我很好奇的是如何在登录屏幕上显示桌面通知。显示一些有关初始化脚本的信息会很好。
我试图让它与 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);