Я пытаюсь проверить подлинность LDAP на сервере Windows 2008 Server из окна Fedora.
Следующий код работает из командной строки (печатает «Успех»):
if($ldap = ldap_connect('10.0.0.101')) { ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); $bind = ldap_bind($ldap,'administrator@domain.tld','XXXXXXX'); print ldap_error($ldap); }
… вытягивание одного и того же файла с помощью печати Apache / mod_php «Не удается связаться с сервером LDAP»
Я видел много сообщений о таких проблемах, но не нашел полезной информации о том, как ее разрешить.
Я очень долго боролся с этой точной проблемой на centos6. Разница php.ini кажется хорошим местом для проверки, но это не дало мне ответа. Оказывается, это было связано с SELinux.
$ getsebool -a | grep httpd allow_httpd_anon_write --> off allow_httpd_mod_auth_ntlm_winbind --> off allow_httpd_mod_auth_pam --> off allow_httpd_sys_script_anon_write --> off httpd_builtin_scripting --> on httpd_can_check_spam --> off httpd_can_network_connect --> off httpd_can_network_connect_cobbler --> off httpd_can_network_connect_db --> on httpd_can_network_memcache --> on httpd_can_network_relay --> off httpd_can_sendmail --> off httpd_dbus_avahi --> on httpd_enable_cgi --> on httpd_enable_ftp_server --> off httpd_enable_homedirs --> off httpd_execmem --> off httpd_manage_ipa --> off httpd_read_user_content --> off httpd_run_stickshift --> off httpd_setrlimit --> off httpd_ssi_exec --> off httpd_tmp_exec --> off httpd_tty_comm --> on httpd_unified --> on httpd_use_cifs --> off httpd_use_gpg --> off httpd_use_nfs --> off httpd_use_openstack --> off httpd_verify_dns --> off
Вы заметите, что в моем случае адрес httpd_can_network_connect был отключен. Это логическое значение в SELinux и может быть скорректировано с помощью следующей команды.
$ setsebool -P httpd_can_network_connect on
Подробнее об этом вы можете узнать по адресу http://wiki.centos.org/TipsAndTricks/SelinuxBooleans, который явно использует пример apache и ldap в качестве примера. Надеюсь, поможет!
Возможно, у вас возникла эта проблема, потому что у Apache есть один файл php.ini
и у CLI
может быть другой, и версия Apache может не включать расширение LDAP
.
Попробуйте проверить, какой php.ini
загружается с phpinfo()
в обеих средах:
<?php print phpinfo(); ?>
Вы должны увидеть путь php.ini
и дополнительную полезную информацию:
Configuration File (php.ini) Path => /etc/php5/cli Loaded Configuration File => /etc/php5/cli/php.ini Scan this dir for additional .ini files => /etc/php5/cli/conf.d
Альтернативный способ увидеть конфигурацию, загруженную в CLI
– это вызов php
с параметром -i
:
$ php -i | grep 'php.ini' Configuration File (php.ini) Path => /etc/php5/cli Loaded Configuration File => /etc/php5/cli/php.ini