2017-01-19 21 views
-1

ich einen Code bin zu entwickeln, die zum Extrahieren von Benutzerinformationen aus Active Directory-Benutzer-ID und durch geeignete LDAP-Server-Authentifizierung ldap_search Shell-Skript-Befehl verwendet. Ich bekomme genaue Ergebnisse von ldap_search Skript.Shell Script-Befehl „ldap_search“ funktioniert nicht mit PHP exec oder shell_exec Befehl

Aber immer, wenn ich das Shell-Skript in exec oder shell_exec PHP-Befehl setzen, bekomme ich nichts.

Alle anderen Shell-Skripte funktionieren gut mit Hilfe von PHP exec Befehl außer ldap_search.

Gibt es noch eine zusätzliche Aufgabe für mich?

Sind ldap_search und exec/shell_exec nicht miteinander kompatibel?

+0

Meine schlechte, kann ich jetzt sehen, dass Sie versuchen, ein ** PHP-Skript ** mit Shell ausführen? Können Sie uns genau zeigen, was Sie zu tun versuchen (vorzugsweise mit minimalem Code) und welche Fehler angezeigt werden? – Kitson88

+0

Update-1: Mein Beispielcode ist wie folgt: > result.txt; ? > –

Antwort

0

müssen Sie echo exec('your command or script'); verwenden

Stellen Sie sicher, Berechtigungen, um sie auszuführen zu haben. Ich meine, der Web-Benutzer muss dazu berechtigt sein.

Kann scheinen offensichtlich, aber ich denke, Ihr Scheitern ist in etwas Grundlegendes wie folgt. Sie müssen echo setzen, um das Ergebnis des Befehls anzuzeigen.

EDIT Nach dem Lesen Ihrer neuen Kommentare und die Verwendung dieser neuen Info ... Ich sah Sie versuchen, die Ausgabe in eine Datei umleiten ... aber vielleicht haben Sie 2 verschiedene Probleme.

  1. Haben die Benutzer php (normalerweise www-data) Erlaubnis, auf den Ordner zu schreiben, wo der php ist?

  2. Ihr Code enthält Anführungszeichen in Anführungszeichen, die mit Escapezeichen versehen werden müssen. Versuchen Sie folgendes:

<?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"); ?>

So brauchen Sie nicht Echo, wenn Sie die Ausgabe in einer Datei möchten. Und die Umleitung >> kann innerhalb des Befehls ausgeführt werden, nicht in PHP.

Denken Sie daran, dass > ersetzt de Datei und was Sie haben >> am Ende der Datei hinzufügen.

+0

Mein Beispielcode ist wie folgt:? > result.txt; ?> –

+0

Wie Sie sehen können, habe ich Echo verwendet, um meine Ausgabe zu drucken. Wie ich in meinem Problem gesagt habe, ist nichts falsch mit dem PHP-Befehl "exec()". Ich habe es bereits mit einfachen Shell-Skript-Befehlen wie "pwd", "ifconfig" usw. versucht. Nur ldapsearch funktioniert nicht. Wie für die Erlaubnis, in CentOS-Terminal ldapsearch Ausgabe von Bash-Ausführung kommt perfekt. –

+0

Jetzt mit mehr Daten habe ich meine Antwort bearbeitet. Hör zu – OscarAkaElvis

Verwandte Themen