Enable LDAP support in PHP served under XAMPP and Windows

Connection to LDAP in PHP isn’t that easy task by itself. Things get even more complicated, if you’re working in XAMPP environment under Windows. It hope this article will help you in getting un-stuck, if you’re stuck on the similar things, as I did.

Notice: solution provided in this article may not work for you! It worked on my office computer and failed completely on my home computer, though both are quite similar (same version of Windows and XAMPP etc.).

Since, we’re talking about very stupid system (Windows) and about even more stupid situation (claiming, that file is not found, though it exists in folder listed in PATH variable), I have no bloody idea, why it doesn’t work (or why it does work on certain computers) and how to solve this problem.

First issue

To use LDAP support in PHP served under Windows you need to have three libraries:

  • libsasl.dll,
  • ssleay32.dll and
  • libeay32.dll.

You have to put them into system32 folder, if you’re serving your PHP through XAMPP.

So, information provided in PHP documentation about installation of LDAP support in Note to Win32 Users is wrong and comment provided by user named Frank is correct. You need to have libsasl.dll library not only for very old PHP 4.3 or older. Even newest versions of PHP 5.3 and above require this lib.

What is even more strange, I had this library (along with required ssleay32.dll and libeay32.dll) in my PHP’s directory and my PHP’s directory was listed in Windows’ PATH variable. And even so, I’m facing the problem of Apache failing to start. The only workaround, I found, was to copy libsasl.dll to system32 system directory. Solution, that PHP documentation here discourages.

So, to summarize, section Note to Win32 users is twice wrong (at least in form from writing this article; I posted note to update it). You do have to have libsasl.dll library and you must place it in system folder.

Enable support

You have to edit your php.ini file and uncomment extension=php_ldap.dll line. Then you have to restart your Apache / XAMPP / server.

If you don’t have above mentioned libraries, next run of server will fail with information, which directory is missing. Newest XAMPP brings these libraries in XAMPPphp folder, so you only have to copy them to system32 folder, because for some strange reason, libraries in XAMPPphp are not loaded, though all of them are in PATH system environment variable.

Copy all of these libraries (or just libsasl.dll, as many other programs are using ssleay32.dll and libeay32.dll libraries and one of them could already put these two libs) to your system32 folder.

Final words

Next Apache restart should go without any problems and your code should be able to login to LDAP server.

For examples of authenticating user in LDAP see my Logging user to LDAP directory under Yii text.

Leave a Reply