[libvirt] [libvirt-php] libvirt_connect not reading out credential info on 0.5.2

Michal Privoznik mprivozn at redhat.com
Mon Sep 5 07:33:14 UTC 2016


On 02.09.2016 11:11, Fernando Casas Schössow wrote:
> I'm running libvirt-php 0.5.2 on CentOS 7 with libvirt 2.1.0.
> Using virsh I'm able to connect to hyper-v hosts correctly but using
> libvirt-php it fails during authentication since it seems that the
> credentials are not being passed along.
> 
> This is the php code I'm using:
> 
> <?php
> $logfile = 'test.log';
> 
> unlink($logfile);
> if (!libvirt_logfile_set($logfile))
> die('Cannot set the log file');
> 
> $connstr = 'hyperv://user@hyperv-host/?transport=http';
> $credentials =
> array(VIR_CRED_AUTHNAME=>'Administrator',VIR_CRED_PASSPHRASE=>'somepass');
> $conn = libvirt_connect($connstr, false, $credentials);
> echo libvirt_get_last_error();
> unset($conn);
> 
> $fp = fopen($logfile, 'r');
>    $str = fread($fp, filesize($logfile));
>    fclose($fp);
> 
> echo '<pre>';
> echo $str;
> print_r($credentials);
> echo '</pre>';
> ?>
> 

Unfortunately, I don't have a hyperv instance to try this out, but for
other connection URIs (like qemu:///system) this works for me.

> And this is the output:
> 
> 
> authentication failed: Password request failed
> 
> [2016-09-02 11:10:02 libvirt-php/core ]: libvirt_connect: Found 0
> elements for credentials
> [2016-09-02 11:10:02 libvirt-php/core ]: libvirt_virConnectAuthCallback:
> cred 0, type 5, prompt Enter Administrator's password for hyperv-host
> challenge hyperv-host
> [2016-09-02 11:10:02 libvirt-php/core ]: libvirt_virConnectAuthCallback:
> result (null) (0)
> [2016-09-02 11:10:02 libvirt-php/core ]: libvirt_connect: Cannot
> establish connection to hyperv://Administrator@hyperv-host/?transport=http
> Array
> (
>    [2] => Administrator
>    [5] => somepass
> )
> 
> 
> Note the "Found 0 elements for credentials".
> After doing some googling I found an email thread "[libvirt]
> [libvirt-php PATCH 0/3] Fix PHP5 compatibilty issues." that I think is
> related to my problem, especially patch 2/3.
> I also checked github project and saw that those patches are already
> merged in the code so I went ahead and apply them to 0.5.2 source code
> and rebuild:
> 
> use VIRT_FOREACH macros everywhere - Commit: f4b760d
> libvirt_connect: use loop macros to read cred info - Commit: d704106
> Define macros for looping php hash tables - Commit: 673a0bf
> 
> The build went fine but now when I'm trying to connect to the hyper-v
> host using libvirt-php I get an internal server error (500) so it seems
> PHP is crashing. From the system log I see:
> 
> kernel: traps: php-cgi[43452] general protection ip:7f63907f74a0
> sp:7fff12d61f68 error:0 in libvirt.so.0.2001.0[7f6390735000+385000]

If you could attach a debugger and get a stack trace where this is
happening that'd be great.

> 
> Is there any other patch that I'm missing?

Doesn't look like it, but if you could try the current git HEAD that
would help. I mean, if you see the error even with that the bug is still
there.

> Any ideas on how to fix the libvirt_connect credentials issue without
> applying the patches above?

I should probably do a release soon. Not that there was a much movement
since the last one though.

Michal




More information about the libvir-list mailing list