2017-09-19 3 views
0

Ich erstelle einfache Wi-Fi Scanscript auf Raspberry Pi. Dafür habe ich Lighttp Web Server und PHP benutzt. Ich kann PHP ohne irgendwelche Probleme laufen lassen. aber wenn ich Shell-Skript mit PHP laufen lasse, gebe ich die Ergebnisse nicht richtig zurück. Mein Code ist wie folgt:PHP shell_exec mit lighttpd auf Raspberry Pi

<?php 
$ssidoutput = shell_exec('. /var/www/html/scanssid.sh'); 
sleep(3); 
echo "<pre>$ssidoutput </pre>"; 
#var_dump($ssidoutput); 
?> 

aber wenn ich dies ausführe bekomme ich nur einen SSID-Druck auf meinem Webbrowser. aber wenn ich ein Shell-Skript ausführe, kann ich die vollständige Liste der SSIDs auf meinem Terminal sehen. Ich dachte, dass dies eine Art von Ausführungszeitproblem ist und Schlafwert hinzufügen. aber das wird mein Problem nicht beheben. wie man das beheben kann. mein Shell-Skript enthält nichts außer Befehl, um die SSIDs für Raspbian zu scannen

+0

Ist das ein echter Tippfehler von 'ssidoutp' vs' ssidoutput'? –

Antwort

1

Ich denke, Sie stehen vor dieser, weil "shell_exec" in PHP nicht in der Lage, mehrzeilige Ausgabe zu lesen. Am einfachsten zu tun ist, ändern Sie Ihr Skript, um alle SSID in einer Zeile zu drucken. kann durch Kommas getrennt sein und dann in PHP verarbeitet werden, um das Komma durch eine neue Zeile zu ersetzen.

+0

Nein, auch wenn ich | xargs zu den Shell-Skript-Ergebnissen sind gleich, Und wenn ich Befehl wie ls -l ausführe es korrekt drucken die multi-line-Ausgabe –

+0

können Sie versuchen, | | wc -l in shell_exec, um zu wissen, ob das Problem mit dem Timing zusammenhängt oder nicht. – Devidas

+0

gibt es einen anderen Vorschlag, entfernen Sie Schlaf und versuchen Sie, Ihren Befehl direkt aus Shell_Exec auszuführen, anstatt in Shell-Skript einzukapseln – Devidas