【发布时间】:2017-12-18 19:49:57
【问题描述】:
我正在使用 PHP 构建一个 CLI 应用程序,其中我需要使用 notify-send 作为 root 用户发送通知。
现在我知道在尝试发送通知之前我需要设置DBUS_SESSION_BUS_ADDRESS。否则将无法正常工作。
下面的代码:
$c = sprintf("DBUS_SESSION_BUS_ADDRESS=".$DBUS_SESSION." /usr/bin/notify-send \"TITLE\" \"MESSAGE\"");
system($c);
抛出错误
system():检测到 NULL 字节。可能的攻击 /filepath.php 上 第 186 行
从我的大量调试中我发现$DBUS_SESSION 导致了这个问题。但是,如果我对 $DBUS_SESSION 值进行硬编码,则该命令可以正常工作!
像这样:
$c = sprintf("DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus,guid=5ded8923178f8ea19642e36a5a37eb76 /usr/bin/notify-send \"sdfTITLE\" \"MESSAGE\"");
system($c);
这里发生了什么?我该如何解决这个问题?
【问题讨论】: