Bug #79165 [Opn->Csd]: trying to access ldap_get_entries array triggers: Trying to access array offset
Edit report at https://bugs.php.net/bug.php?id=79165&edit=1
ID: 79165
User updated by: mbiebl at messageconcept dot com
Reported by: mbiebl at messageconcept dot com
Summary: trying to access ldap_get_entries array triggers:
Trying to access array offset
-Status: Open
+Status: Closed
Type: Bug
Package: LDAP related
PHP Version: 7.4.2
Block user comment: N
Private report: N
New Comment:
Let's close this. This is an issue that needs to be solved in our code.
The issue was just hidden with previous PHP releases. We need to handle the 'count' array
entry explicitly.
Not sure yet, if array_slice() is the proper solution. I guess there is no guarantee that the
'count' entry will always be the first entry in the result array.
Previous Comments:
------------------------------------------------------------------------
[2020-01-24 13:12:28] mbiebl at messageconcept dot com
$result = ldap_search($con, $dn, $filter, $justthese);
$entries = ldap_get_entries($con, $result);
foreach ($entries as $e) {
if ($e[$this->uidNameAttribute][0] == '') {
continue;
}
$principal = array('uri' => 'principals/' .
strtolower($e[$this->uidNameAttribute][0]),);
foreach ($this->fieldMap as $key => $value) {
if (isset($e[$value['ldapProperty']])) {
$principal[$key] = $e[$value['ldapProperty']][0];
}
}
$principals[] = $principal;
}
------------------------------------------------------------------------
[2020-01-24 13:07:39] cmb@php.net
Could you please post the relevant code (and show the reported
line number)?
------------------------------------------------------------------------
[2020-01-24 12:28:07] mbiebl at messageconcept dot com
Hm, right. I guess I need to explicitly skip the "count" element now which is part of the
$result array.
foreach (array_slice($entries, 1) as $e) { .. }
appears to work. Not sure if this is the cleanest solution though. WDYT?
------------------------------------------------------------------------
[2020-01-24 12:05:41] nikic@php.net
foreach does not trigger this notice. Please check the reported line number carefully. It must
involve something like "$array[$offset]".
------------------------------------------------------------------------
[2020-01-24 11:55:25] mbiebl at messageconcept dot com
Description:
------------
I have the following code
$result = ldap_search($con, $dn, $filter, $justthese);
$entries = ldap_get_entries($con, $result);
and then the following code to iterate through the results
foreach ($entries as $e) { ... }
This code worked fine with 7.3 and now yields the following error with 7.4:
"Trying to access array offset on value of type resource"
ldap_get_entries() is supposed to return an array and var_dump($entries) prints
array(11) {
["count"]=>
int(10)
[0]=>
....
}
So something is at odds here. Why does PHP 7.4 think $entries is not an array?
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=79165&edit=1
Thread (8 messages)