PHP系统通知发送

PHP系统通知发送,php,linux,ubuntu,Php,Linux,Ubuntu,我试图在某些情况下显示通知。我看到你可以用系统功能来做这件事。除非我不能让它工作 error_reporting(E_ALL); system("notify-send 'Text here?'"); system('notify-send "Text here?"'); 谁能告诉我我做错了什么?还是我的设置错误?我想用notifysend和PHP在Ubuntu上创建通知 问候好的,尽管这有点解决了,但我想在这里添加一些注释/信息, 据我所知,问题应该是运行PHP的用户与运行桌面会话gnome

我试图在某些情况下显示通知。我看到你可以用系统功能来做这件事。除非我不能让它工作

error_reporting(E_ALL);
system("notify-send 'Text here?'");
system('notify-send "Text here?"');
谁能告诉我我做错了什么?还是我的设置错误?我想用notifysend和PHP在Ubuntu上创建通知


问候

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

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

我将导出显示方法转换为/usr/bin脚本。我通过远程ssh将其测试到系统中,并在bash脚本/cron中成功地使用了它。
我好奇的是如何在登录屏幕上显示桌面通知。如果能显示一些关于init脚本的信息就好了。

我试图用php来实现这一点,但是我在这里看到的每个解决方案都很糟糕,要么以用户身份运行apache,要么导出显示等等

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

Install node.js应该很容易下载、配置、制作、制作和安装 创建此应用程序的目录,例如。Gmkdir~/消息 安装express framework:cd~/message;npm安装快车 创建脚本 运行它。。。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);

Try命令:whereis notify send查找notify send的完整路径,然后在代码中使用它并重试。更改为system'/usr/bin/notify send sdfsd';从控制台以root用户的身份运行PHP代码仍然没有运气,比如sudophp/path/to/your/script.PHP。如果有效,问题应该是特权。这是一个特权问题。谢谢你,阿利克斯!我应该试试看,这可能是唯一需要的一件事了。这是一个PHP解决方案,而不是一个节点解决方案