我有一个 LDAP PHP 类,它适用于我们公司的所有其他 PHP 安装。但是,现在我从 SuSE 更改为 Ubuntu 11.04,代码停止工作。 PHP版本为5.3.5。
我尝试连接到我们的 LDAP 服务器。连接到它后,我尝试运行 ldap_search。它失败并显示错误消息“ldap_search():搜索:无法联系 LDAP 服务器”。 我使用 wireshark 查看了流量,可以看到 php 和 ldap 之间正在发生通信,可惜没有发生连接。
感谢您的意见, 乌韦
这是我使用的代码:
class ldap{
private $ldap_conn;
private $ldaphost;
private $ldapport;
public function __construct ()
{
$this->ldaphost = 'ldaps://ourserver.co.nz'; // obviously a fake name
$this->ldapport = 636;
$this->ldap_conn = ldap_connect($this->ldaphost, $this->ldapport) or die("Could not connect to $this->ldaphost");
}
public function signin ($username,$password, $applicationName)
{
$dn = "o=MY_COM";
$filter="(cn=$username)";
$justthese = array("dn","fullname", "mail");
$sr=ldap_search($this->ldap_conn, $dn, $filter, $justthese);
$people = ldap_get_entries($this->ldapconn, $sr);
if (!$people || count($people) == 0 || $people['count'] == 0)
{ //Nothing found, quit.
return AUTH_ERROR_NO_DN;
}
$dn = ($people[0]['dn']);
if (($dn!='')&&($password!=''))
{
$loginStatus = @ldap_bind($this->ldapconn, $dn, $password);
if ($loginStatus)
{
$fullname = $people[0]['fullname'][0];
if ($fullname=='')
{
$fullname =$dn;
}
$user = array(
'logged_in_dn' => $dn,
'password' => $password,
'username' => $fullname,
'cn' => $username,
'mail' => $people[0]['mail'][0],
'status' => 'AUTHENTICATED'
);
} else
{
$user = array(
'status'=> array('AUTH_ERROR_WRONG_PASSWORD'),
'details' => array(
'logged_in_dn' => '',
'password' => '',
'username' => '',
'cn' => '',
'mail' => '',
'status' => 'AUTHENTICATED'
)
);
}
} else
{
$user = array(
'status'=> array('AUTH_ERROR_NO_DN'),
'details' => array(
'logged_in_dn' => '',
'password' => '',
'username' => '',
'cn' => '',
'mail' => '',
'status' => 'AUTHENTICATED'
)
);
}
return $user;
}
这是执行方法的单元测试: 类 unit_ldapConnectTest 扩展了 TadPhpUnitTestCase
{
function testLdapconnection () {
$ldap = new LDAP();
$user = $ldap->signin('myname','password','');
}
}
最佳答案
这可能是 LDAP 版本问题。
在你调用 ldap_connect 之后调用这个:
ldap_set_option($this->ldap_conn, LDAP_OPT_PROTOCOL_VERSION, 3);
关于PHP 5.3.5 ldap_search() : Search: Can't contact LDAP server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7720795/
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我在开发的Rails3网站的一些搜索功能上遇到了一个小问题。我有一个简单的Post模型,如下所示:classPost我正在使用acts_as_taggable_on来更轻松地向我的帖子添加标签。当我有一个标记为“rails”的帖子并执行以下操作时,一切正常:@posts=Post.tagged_with("rails")问题是,我还想搜索帖子的标题。当我有一篇标题为“Helloworld”并标记为“rails”的帖子时,我希望能够通过搜索“hello”或“rails”来找到这篇帖子。因此,我希望标题列的LIKE语句与acts_as_taggable_on提供的tagged_with方法
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request