PHP ldap_connect() problems

user890443 picture user890443 · Jan 4, 2012 · Viewed 10.7k times · Source

I am trying to get ldap_connect to work properly. It will work fine via CLI, but not when I open my php file via browser.

Here is what I believe are the relevant details:

  • Error message: Fatal error: Call to undefined function ldap_connect() in F:\Websites\ldap.php on line 4
  • OS: Windows Server 2008 R2 x64
  • PHP Directory: C:\Program Files (x86)\PHP
  • libeay32.dll and ssleay32.dll have been added to both C:\Program Files (x86)\Apache Software Foundation\Apache2.2\bin and C:\Windows\System32. They were copied from C:\Program Files (x86)\PHP.

Lines added to httpd.conf:

  • LoadModule php5_module "C:/Program Files (x86)/PHP/php5apache2_2.dll"
  • AddType application/x-httpd-php .php
  • PHPIniDir "C:/Program Files (x86)/PHP"

Things changed in php.ini:

  • extension_dir = "C:/Program Files (x86)/PHP/ext" (path set)
  • extension=php_ldap.dll (uncommented this line)

I'm pulling my hair out, so I am more than happy to try anything people suggest.

Answer

DaveRandom picture DaveRandom · Jan 4, 2012

Your PHP installation uses two different ini files - one when running from the command line, and a different one when running through Apache. This is evidenced by the fact that it works from the CLI, but not in a browser.

You can find the paths to the two files using phpinfo() (in a browser) and by passing the -i flag to php from the command line. Near the top of both sets of output you will find the path to the ini file in use, and I would be mighty surprised if they were identical. From the command line you can get more detailed information by passing the --ini flag.

The fact that you are getting Call to undefined function ldap_connect() can only mean that the LDAP extension was not loaded, and this can only be true through Apache but not through the CLI if they use two different ini files.