私のdebianシステムにNetworkManager、Dbus、Nginx Webサーバー、PHP、およびDbusPHP拡張機能をセットアップしました。
PHPWebアプリケーションから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 :: _ call():org.freedesktop.NetworkManagerSettings.System.NotPrivileged:Insufficientprivileges。」<br>
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>
、しかしそれは何も変更しません。また、ルートおよびnetdevグループにwww-dataを追加しましたが、それも役に立ちませんでした。