ldap_get_entries () не работает последовательно - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь напечатать переключатели всех объектов OrganizationalUnit в моем каталоге LDAP из сценария PHP ниже. Сценарий иногда работает так, как задумано, но иногда, если я перезагружаю его, я получаю пустую страницу и запись в журнале ошибок apache, в которой говорится:

[php7:warn]... PHP Warning:  ldap_get_entries() expects parameter 2 to be resource, boolean given in /var/www/authtest/test.php on line 13

Если я запускаю скрипт из командной строки (php test.php), он всегда будет выводить правильные результаты без ошибок. Я попытался написать код на нескольких примерах, но прежде всего это пример . Есть ли лучший способ сделать это?

<?php

   print "<html><head><title>ldap test</title></head><body>";

   // connect to ldap server
   $ldapconn = ldap_connect("ldaps://ldap.my.net") or die("Could not connect to LDAP server.");
   ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);

   if ($ldapconn)
   {
      $basedn = "dc=my,dc=net";
      $attributes = array("ou","cn");
      $sr = ldap_search ($ldapconn, $basedn, "(ObjectClass=OrganizationalUnit)", $attributes);
      $info = ldap_get_entries($ldapconn, $sr);
   }

   if ($info["count"] > 0)
   {
      for ($i=0; $i < $info["count"]; $i++)
      {
         $ou = $info[$i]["ou"][0];
         print "<input type='radio' name='ldap_ou' value='$ou'>$ou<br>";
      }
   }

   print "</body></html>";

?>
...