This topic is locked
[SOLVED]

 ldap error

9/18/2012 4:50:46 PM
PHPRunner General questions
R
rlee6087 author

I get this error when I try and run the application from the server, using the production web server. However when I run the application locally using the built in web server , it works fine, and authenticates via ldap. I'm using phph runner 6.1, IIS and mysql. here is the error again. Fatal error: Call to undefined function ldap_connect() in E:\Web\PHP\phproot\Communications_Plan\output\classes\runnerldap.php on line 23

Please help. also here is a copy of the runnerldap.php file that it refers to.
<?php

/**

  • Class for display admin_rights_list



    /

    class RunnerLdap

    {

    var $ldap_domainName = '';
    var $ldap_serverIP = NULL;
    var $ldapconn = null;
    var $ldapbind = null;
    function RunnerLdap($aDomainName,$aServerIP){

    $this->ldap_domainName = $aDomainName;

    $this->ldap_serverIP = $aServerIP;

    }
    function runner_ldap_connect($aUsername,$aPassword){

    // connect to ldap server

    $this->ldapconn = ldap_connect("ldap://".$this->ldap_serverIP);

    if (!$this->ldapconn || ldap_errno($this->ldapconn)!=0)

    return false;

    @ldap_set_option($this->ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);

    ldap_set_option($this->ldapconn, LDAP_OPT_REFERRALS, 0);

    // binding to ldap server

    $this->ldapbind = @ldap_bind($this->ldapconn, $aUsername."@".$this->ldap_domainName, $aPassword);

    if(!$this->ldapbind)

    return false;

    return true;

    }
    /**
    • Search LDAP tree
    • @ An LDAP link identifier, returned by ldap_connect()
    • @ string The search filter
    • @ array An array of the required attributes

      /

      function runner_ldap_getData($filter,$attributes=array()){

      $ldap_dn = $this->ldap_DomainToDN($this->ldap_domainName);

      if (sizeof($attributes)) {

      $query = ldap_search($this->ldapconn, $ldap_dn, $filter);

      }else {

      $query = ldap_search($this->ldapconn, $ldap_dn, $filter, $attributes);

      }

      // Read all results from search

      $entries = ldap_get_entries($this->ldapconn, $query);

      return $this->runner_convert_entries($entries);

      //return $entries;

      }
      function runner_convert_entries($aData){
      $resultArr = array();

      if (!sizeof($aData)) {

      return null;

      }
      for ($j=0;$j<$aData['count'];$j++){

      $result = array();

      foreach ($aData[$j] as $key=>$val){

      if (is_numeric($key))

      continue;

      if ($val["count"] > 1 || $key == 'memberof'){

      //set array

      $tmpResult = array();

      for ($i=0;$i<$val['count'];$i++){

      $tmpResult[] = $val[$i];

      }

      $result[$key] = $tmpResult;

      }

      else if ($key=='dn'){

      $result[$key] = $val;

      }

      else {

      $result[$key] = $val[0];

      }

      }

      $resultArr[] = $result;

      }
      return $resultArr;

      }
      /

    • Convert domain name test.xlinesoft.com
    • return DC=test,DC=xlinesoft,DC=com

      /

      function ldap_DomainToDN($aDomain){

      $arrDomain = explode(".",$aDomain);

      for ($i=0;$i<sizeof($arrDomain);$i++){

      $arrDomain[$i] = "dc=".$arrDomain[$i];

      }

      return implode(',',$arrDomain);

      }
      function runner_ldap_unbind(){

      ldap_unbind($this->ldapconn);

      }

      function ldap_error(){

      return ldap_err2str(ldap_errno($this->ldapconn));

      }

      //function for Active Directory

      /

    • This function retrieves and returns CN from given DN
    • $dn = CN=Users,CN=Builtin,DC=test,DC=xlinesoft,DC=com
    • return Users

      /

      function ldap_getCN($dn) {

      preg_match('/[^,]
      /', $dn, $matchs, PREG_OFFSET_CAPTURE, 3);

      return $matchs[0][0];

      }
      /*
    • This function searchs in LDAP tree ($ad -LDAP link identifier)
    • entry specified by samaccountname and returns its DN or epmty
    • string on failure.
    • $samaccountname = Users
    • $basedn = DC=test,DC=xlinesoft,DC=com
    • return CN=Users,CN=Builtin,DC=test,DC=xlinesoft,DC=com

      */

      function ldap_getDN($ad, $samaccountname, $basedn) {

      $attributes = array('dn');

      $result = ldap_search($ad, $basedn,

      "(samaccountname={$samaccountname})", $attributes);

      if ($result === FALSE) { return ''; }

      $entries = ldap_get_entries($ad, $result);

      if ($entries['count']>0) { return $entries[0]['dn']; }

      else { return ''; };

      }
      function getGroupSid($userSid, $primaryGroupId)

      {

      $tgroup = bin2hex(substr($userSid,0, strlen($userSid)-4));

      $group="";

      for($i = 0; $i<strlen($tgroup); $i += 2)

      {

      $group .= '\\'.substr($tgroup,$i,2);

      }

      $group .= sprintf("\\%02x",$primaryGroupId & 255);

      $group .= sprintf("\\%02x",($primaryGroupId >>8) & 255);

      $group .= sprintf("\\%02x",($primaryGroupId >>16) & 255);

      $group .= sprintf("\\%02x",($primaryGroupId >>24) & 255);

      return $group;

      }

      }