2017-09-19 12 views
0

라즈베리 파이에 간단한 Wi-Fi 스캐닝 스크립트를 만들고 있습니다. 그것을 위해 lighttp 웹 서버와 PHP를 사용했습니다. 나는 어떤 문제없이 PHP를 실행할 수 있습니다. 하지만 PHP를 사용하여 쉘 스크립트를 실행하면 결과가 제대로 반환되지 않습니다. 내 코드는 다음과 같습니다.라즈베리 파이에 lighttpd가있는 PHP shell_exec

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

그러나이 코드를 실행하면 웹 브라우저에서 하나의 SSID 만 인쇄됩니다. 쉘 스크립트를 실행하면 터미널에서 SSID의 전체 목록을 볼 수 있습니다. 나는 이것이 실행 시간 문제라고 생각하고 수면의 가치를 더한다. 하지만 그건 내 문제를 해결하지 않을 것이다. 이 문제를 해결하는 방법. 내 셸 스크립트는 아무것도 포함하지만 Raspbian에 대한 SSID를 스캔하는 명령이 포함되어 있습니다

+0

그게'ssidoutp'와'ssidoutput'의 실제 오타입니까? –

답변

1

나는 php에서 "shell_exec"가 다중 행 출력을 읽을 수 없기 때문에 이것을 직면하고 있다고 생각합니다. 가장 쉬운 방법은 모든 SSID를 한 줄에 인쇄하도록 스크립트를 수정하는 것입니다. 쉼표로 구분 한 다음 php로 처리하여 쉼표를 새 줄로 바꿀 수 있습니다.

+0

내가 추가 한 경우에도 | 쉘 스크립트 결과에 대한 xargs는 동일합니다. 그리고 ls -l과 같은 명령을 실행하면 멀티 라인 출력을 올바르게 인쇄합니다. –

+0

'| 문제가 타이밍과 관련이 있는지를 알기 위해 shell_exec의 wc -l을 사용한다. – Devidas

+0

수면을 제거하고 셸 스크립트에서 캡슐화하지 말고 shell_exec에서 직접 명령을 실행 해보십시오. 또 다른 제안이 있습니다. – Devidas