PHPackages                             cymapgt/ldap - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. cymapgt/ldap

ActiveLibrary

cymapgt/ldap
============

A Pure PHP LDAP library

0.5.0(7y ago)139MITPHPPHP &gt;=7.0.0

Since Oct 23Pushed 7y ago1 watchersCompare

[ Source](https://github.com/cymapgt/LDAP)[ Packagist](https://packagist.org/packages/cymapgt/ldap)[ Docs](https://github.com/FreeDSx/LDAP)[ RSS](/packages/cymapgt-ldap/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependencies (10)Versions (9)Used By (0)

FreeDSx [![Build Status](https://camo.githubusercontent.com/346621cae54a48bd4a21b3c3c847cb01c08425bd1534073c5fa30caeb5464d47/68747470733a2f2f7472617669732d63692e6f72672f467265654453782f4c4441502e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/FreeDSx/LDAP) [![AppVeyor Build Status](https://camo.githubusercontent.com/b330a4f0414a46b418d44bb8a7e8cede99d392b5a5676ec8f16f966cdda9a587/68747470733a2f2f63692e6170707665796f722e636f6d2f6170692f70726f6a656374732f7374617475732f6769746875622f667265656473782f6c6461703f6272616e63683d6d6173746572267376673d74727565)](https://ci.appveyor.com/project/ChadSikorra/ldap)
==========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

[](#freedsx--)

FreeDSx is a pure PHP LDAP library. It has no requirement on the core PHP LDAP extension. This library currently implements most client functionality described in [RFC 4511](https://tools.ietf.org/html/rfc4511) and some very limited LDAP server functionality. It also implements some other client features from various RFCs:

- Paging Control Support ([RFC 2696](https://tools.ietf.org/html/rfc2696))
- VLV Control Support ([draft-ietf-ldapext-ldapv3-vlv-09](https://www.ietf.org/archive/id/draft-ietf-ldapext-ldapv3-vlv-09.txt))
- Server Side Sort Control ([RFC 2891](https://tools.ietf.org/html/rfc2891))
- Password Modify Request ([RFC 3062](https://tools.ietf.org/html/rfc3062))
- String Representation of Search Filters ([RFC 4515](https://tools.ietf.org/search/rfc4515))

It supports encryption of the LDAP connection through TLS via the OpenSSL extension if available.

Documentation
=============

[](#documentation)

- [LDAP Client](/docs/Client)
    - [Configuration](/docs/Client/Configuration.md)
    - [General Usage](/docs/Client/General-Usage.md)
    - [Operations](/docs/Client/Operations.md)
    - [Searching and Filters](/docs/Client/Searching-and-Filters.md)
- [LDAP Server](/docs/Server)
    - [Configuration](/docs/Server/Configuration.md)
    - [General Usage](/docs/Server/General-Usage.md)

Getting Started
===============

[](#getting-started)

Install via composer:

```
composer require freedsx/ldap
```

Use the LdapClient class and the helper classes:

```
use FreeDSx\Ldap\LdapClient;
use FreeDSx\Ldap\Operations;
use FreeDSx\Ldap\Search\Filters;

$ldap = new LdapClient([
    # Servers are tried in order until one connects
    'servers' => ['dc1', 'dc2'],
    # The base_dn is used as the default for searches
    'base_dn' => 'dc=example,dc=local'
]);

# Bind to LDAP with a specific user.
$ldap->bind('user@example.local', '12345');

# Build up a LDAP filter using the helper methods
$filter = Filters::and(
    Filters::equal('objectClass', 'user'),
    Filters::startsWith('cn', 'S'),
    # Add a filter object based off a raw string filter...
    Filters::raw('(telephoneNumber=*)')
);
# Create a search operation to be used based on the above filter
$search = Operations::search($filter, 'cn');

# Create a paged search, 100 results at a time
$paging = $ldap->paging($search, 100);

while ($paging->hasEntries()) {
    $entries = $paging->getEntries();
    var_dump(count($entries));

    foreach ($entries as $entry) {
        echo "Entry: ".$entry->getDn().PHP_EOL;
    }
}
```

CRUD Operations:
================

[](#crud-operations)

- [Create](#create)
- [Read](#read)
- [Update](#update)
- [Delete](#delete)

Create
------

[](#create)

```
use FreeDSx\Ldap\Entry\Entry;
use FreeDSx\Ldap\Exception\OperationException;

# Create a new LDAP entry object
$entry = (new Entry('cn=foo,dc=domain,dc=local'))
   ->set('objectClass','top', 'group')
   ->set('sAMAccountName', 'foo');

# Create the entry with the LDAP client
try {
    $ldap->create($entry);
} catch (OperationException $e) {
    echo sprintf('Error adding entry (%s): %s', $e->getCode(), $e->getMessage()).PHP_EOL;
}
```

Read
----

[](#read)

```
# Use the read() method of the LDAP client to search for a specific entry.
# Optionally pass an array of attributes to select as the second argument.
$entry = $ldap->read('cn=foo,dc=domain,dc=local');

# Entry will be null if it doesn't exist
if ($entry) {
    echo $entry.PHP_EOL;
    var_dump($entry->toArray());
}
```

Update
------

[](#update)

```
use FreeDSx\Ldap\Exception\OperationException;

# Search for an entry object to get its current attributes / values
$entry = $ldap->read('cn=foo,php7.1dc=domain,dc=local');

# Add a value to an attribute
if (!$entry->get('telephoneNumber')) {
    $entry->add('telephoneNumber', '555-5555');
}
# Remove any values an attribute may have
if ($entry->has('title')) {
    $entry->reset('title');
}
# Delete a specific value for an attribute
if ($entry->get('ipPhone')->has('12345')) {
    $entry->delete('ipPhone', '12345');
}
# Set a value for an attribute. This replaces any value it may, or may not, have.
$entry->set('description', 'Employee');

# Send the built up changes back to LDAP to update the entry via the LDAP client update method.
try {
    $ldap->update($entry);
} catch (OperationException $e) {
    echo sprintf('Error modifying entry (%s): %s', $e->getCode(), $e->getMessage()).PHP_EOL;;
}
```

Delete
------

[](#delete)

```
use FreeDSx\Ldap\Exception\OperationException;

# Search for the entry object to delete
$entry = $ldap->read('cn=foo,dc=domain,dc=local');

# Pass the entry object to the delete method of the LDAP client if it was found.
# You could also pass a DN object or a simple DN as a string.
if ($entry) {
    try {
        $ldap->delete($entry);
    } catch (OperationException $e) {
        echo sprintf('Error deleting entry (%s): %s', $e->getCode(), $e->getMessage()).PHP_EOL;;
    }
}
```

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 94% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~32 days

Recently: every ~11 days

Total

8

Last Release

2901d ago

PHP version history (3 changes)0.1.0PHP &gt;=7.1

0.4.1PHP &gt;=7.0

0.2.1PHP &gt;=7.0.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/fb28d50d931adce3d1651a84ff0f5fad172611a15064e1f303ecddd5aaf8d322?d=identicon)[cymapgt](/maintainers/cymapgt)

---

Top Contributors

[![ChadSikorra](https://avatars.githubusercontent.com/u/388229?v=4)](https://github.com/ChadSikorra "ChadSikorra (110 commits)")[![cymapgt](https://avatars.githubusercontent.com/u/12482626?v=4)](https://github.com/cymapgt "cymapgt (7 commits)")

---

Tags

ldap

### Embed Badge

![Health badge](/badges/cymapgt-ldap/health.svg)

```
[![Health](https://phpackages.com/badges/cymapgt-ldap/health.svg)](https://phpackages.com/packages/cymapgt-ldap)
```

###  Alternatives

[directorytree/ldaprecord

A fully-featured LDAP ORM.

5782.9M10](/packages/directorytree-ldaprecord)[directorytree/ldaprecord-laravel

LDAP Authentication &amp; Management for Laravel.

5682.0M15](/packages/directorytree-ldaprecord-laravel)[symfony/ldap

Provides a LDAP client for PHP on top of PHP's ldap extension

1407.5M46](/packages/symfony-ldap)[ldaptools/ldaptools

LdapTools is a feature-rich LDAP library for PHP 5.6+.

204263.9k1](/packages/ldaptools-ldaptools)[freedsx/ldap

A Pure PHP LDAP library

157142.4k2](/packages/freedsx-ldap)[edvlerblog/yii2-adldap-module

yii2 Active Directory implementation (wrapper for Adldap2)

51227.3k](/packages/edvlerblog-yii2-adldap-module)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
