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
andlibeay32.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.