PHP通过Dbus与NetworkManager对话
我在debian系统上安装了NetworkManager、Dbus、Nginx web服务器、PHP和Dbus PHP扩展。PHP通过Dbus与NetworkManager对话,php,debian,dbus,Php,Debian,Dbus,我在debian系统上安装了NetworkManager、Dbus、Nginx web服务器、PHP和Dbus PHP扩展。 我正试图通过我的PHP web应用程序中的Dbus与NetworkManager“交谈”。 在检索有关连接的信息时,它可以正常工作,如以下代码所示: $dbus = new Dbus( Dbus::BUS_SYSTEM, true); $proxy = $dbus->createProxy("org.freedesktop.NetworkManager", "/or
我正试图通过我的PHP web应用程序中的Dbus与NetworkManager“交谈”。 在检索有关连接的信息时,它可以正常工作,如以下代码所示:
$dbus = new Dbus( Dbus::BUS_SYSTEM, true);
$proxy = $dbus->createProxy("org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManagerSettings", "org.freedesktop.NetworkManagerSettings");
$d = $proxy->ListConnections();
,但当我要添加新连接时:$d = new Dbus( Dbus::BUS_SYSTEM, true );
$n = $d->createProxy( "org.freedesktop.NetworkManagerSystemSettings", "/org/freedesktop/NetworkManagerSettings", "org.freedesktop.NetworkManagerSettings");
$args = new DBusDict( DBus::STRUCT,
array( 'connection' => new DBusDict( DBus::VARIANT,
array( 'uuid' => new DBusVariant( "06bd5fb0-45f1-0bb0-7ffb-5f3ed6edd604" ),
'id' => new DBusVariant( "PHP Added Network Connection" ),
'type' => new DBusVariant( "802-3-ethernet" ),
'autoconnect' => new DBusVariant(FALSE)
)),
'802-3-ethernet' => new DBusDict( DBus::VARIANT,
array('duplex' => new DBusVariant( "full" )))),
'{sa{sv}}');
$n->AddConnection( $args );
,我得到这个错误:致命错误:未捕获异常“exception”,消息为“DBusObject::\u call():org.freedesktop.NetworkManagerSettings.System.NotPrivileged:权限不足。”
我已将www-data用户添加到/etc/dbus-1/system.d/NetworkManager.conf,并授予他与root用户相同的权限
<policy user=”www-data”>
<allow own=”org.freedesktop.NetworkManager”/>
<allow own=”org.freedesktop.NetwoekManagerSystemSettings”/>
<allow own=”org.freedesktop.NetworkManagerSettings”/>
<allow own=”org.freedesktop.NetworkManagerSettings.System”/>
<allow send_destinations=”org.freedesktop.NetworkManager”/>
<allow send_destinations=”org.freedesktop.NetworkManagerSystemSettings”/>
<allow send_destinations=”org.freedesktop.NetworkManagerSettings”/>
<allow send_destinations=”org.freedesktop.NetworkManagerSettings.System”/>
<allow send_destinations=”org.freedesktop.NetworkManager”
send_interface=”org.freedesktop.NetworkManager.PPP”/>
</policy>
,但它没有改变任何东西。我还向root和netdev组添加了www数据,但这也没有帮助。为了防止它对任何人仍然有用,当前语法不同,如中所示