Я установил php-libvirt, а также все необходимые пакеты (я пробовал remi rpm и компилирование).
Я настроил свой php-файл следующим образом:
<?php
print_r ( libvirt_version() );
echo '<br>';
$uri="qemu+tcp:///system";
$credentials=array(VIR_CRED_AUTHNAME=>"fred",VIR_CRED_PASSPHRASE=>"fred");
echo ("Connecting to libvirt (URI:$uri)<BR>");
$conn=libvirt_connect($uri,false,$credentials);
if ($conn==false)
{
echo ("Libvirt last error: ".libvirt_get_last_error()."<br>");
exit;
} else {
$hostname=libvirt_get_hostname($conn);
echo ("hostname:$hostname<br>");
?>
Однако, когда я загружаю страницу, я получаю:
Array ( [libvirt.release] => 2 [libvirt.minor] => 10 [libvirt.major] => 0 [connector.version] => 0.4.8 [connector.major] => 0 [connector.minor] => 4 [connector.release] => 8 )
Connecting to libvirt (URI:qemu+tcp:///system)
Libvirt last error: unable to connect to server at 'localhost:16509': Permission denied
Работает нормально из командной строки при запуске
# virsh -c qemu + tcp: /// системный список Пожалуйста, введите ваше имя для аутентификации: fred Пожалуйста, введите пароль: Id Name State -------------------------------------------------- -
Я пробовал командную строку с другого сервера, чтобы убедиться, что он будет работать удаленно, и все было в порядке.
Я пробовал fred @ hostname, и это не сработало. Я пробовал VIR_CRED_USERNAME, и это тоже не сработало.
В чем может быть проблема?
По умолчанию механизм аутентификации для TCP-соединения libvirtd — SASL. До сих пор TCP-соединение слушало, и теперь мы должны настроить аутентификацию на основе SASL. Отредактируйте /etc/libvirt/libvirtd.conf, они используют auth_tcp = «none», но используют auth_tcp = «sasl», если это еще не сделано. Теперь выполните следующую команду.
sudo saslpasswd2 -a libvirt fred
Password: fred
Again (for verification): fred
В вашем случае libvirtd прослушивает TCP-соединение, но иногда нам нужно внести некоторые изменения, чтобы он прослушивал данный порт. Первая ссылка в ссылках будет полезна для этого.
Рекомендации:
https://askubuntu.com/questions/423425/i-cant-use-libvirt-with-listen-tcp
http://libvirt.org/auth.html#ACL_server_username
https://www-01.ibm.com/support/knowledgecenter/linuxonibm/liabp/liabpkvmsecsrmsasl.htm
Других решений пока нет …