【问题标题】:Shell script command "ldap_search" is not working with php exec or shell_exec commandShell 脚本命令“ldap_search”不适用于 php exec 或 shell_exec 命令
【发布时间】:2017-01-19 07:30:37
【问题描述】:

我正在开发一个代码,它使用ldap_search Shell 脚本命令使用用户 ID 和正确的 LDAP 服务器身份验证 从 Active Directory 中提取用户信息。我从ldap_search 脚本中得到了准确的结果。

但是,每当我将 shell 脚本放入 execshell_exec PHP 命令时,我什么都得不到。

在 PHP exec 命令的帮助下,除了 ldap_search 之外,所有其他 shell 脚本都可以正常工作。

我还有其他任务要做吗?

ldap_searchexec/shell_exec 不兼容吗?

【问题讨论】:

  • 我的错,我现在可以看到您尝试使用 shell 运行 PHP 脚本?您能否准确地向我们展示您正在尝试做什么(最好使用最少的代码)以及正在显示的任何错误。
  • Update-1:我的示例代码是这样的:>结果.txt; ?>

标签: php linux bash ldap-query


【解决方案1】:

你必须使用echo exec('your command or script');

确保拥有运行它的权限。我的意思是,网络用户必须具有执行该操作的权限。

可能看起来很明显,但我认为你的失败在于这样的基本情况。您必须输入 echo 才能显示命令的结果。

编辑在阅读了有关它的新 cmets 并使用该新信息后...我看到您正在尝试将输出重定向到文件...但也许您有 2 个不同的问题。

  1. 是否有正在执行php的用户(通常是www-data)权限写入php所在的文件夹?

  2. 您的代码在引号内有引号,必须使用 .试试这个:

<?php exec("ldapsearch -x -v -h 'LDAP://server' -p '389' -D 'uid=\"domain_user_id\",ou=users,ou=internal,o=\"organization\"' -w 'domain_password' -b 'ou=users,ou=internal,o=organization' 'uid=person's_user_id' >> result.txt"); ?>

因此,如果您希望在文件中输出,则不需要 echo。并且重定向&gt;&gt;可以在执行的命令中,而不是在php中。

请记住 &gt; 替换 de 文件,而 &gt;&gt; 在文件末尾添加。

【讨论】:

  • 我的示例代码是这样的:>结果.txt; ?>
  • 如您所见,我使用 echo 打印输出。正如我在我的问题中所说的那样,php 命令“exec()”没有任何问题。我已经尝试过使用简单的 shell 脚本命令,例如“pwd”、“ifconfig”等。只是 ldapsearch 不起作用。至于权限,在centOS终端ldapsearch输出通过bash执行来的完美。