2013-12-16 4 views
4

가 나는 아마도 출력을 기대할 수 http://www.php.net/shell_exec에 따르면 shell_exec()PHP는 브라우저에서 shell_exec 출력

wget_file.php

<?php 
$command = "wget http://mydomain.co/media/bigbigbig.wav"; 
$output = shell_exec($command); 
echo $output; 
?> 

에 간단한 wget 명령을 실행 해요 비어 : 는 " 실행 된 명령의 출력 또는 오류가 발생했거나 명령이 출력을 생성하지 않으면 NULL입니다. "

명령 줄에서 wget_file.php를 실행하면 wget 결과가 표시됩니다. 그러나 브라우저에서 실행하면 결과가 제공되지 않습니다. (하지만 파일이 실제로 성공적으로 다운로드됩니다)

cUrl을 통해 호출하여 wget_file.php를 실행하고 url + 경로를 전달할 계획입니다. 실행이 완료된 후에 shell_exec()에서 응답을받는 것이 좋을 것입니다.

브라우저에서 실행되는 결과물을 얻지 못한다면 누구에게 알려주고 있습니까?

답변

7

내가 명령 줄에서 wget_file.php을 실행하면, 나는 '그래서 아마도 당신은 wget과의 표시가

wget

가 출력되지 파일의 내용은 기본적으로 콘솔에 않는 결과를 볼 수 있습니다 상태 정보에 대해 이야기하고 있습니다.

나는이 오히려 STDOUT에 비해 STDERR로 출력 상상 것, 그것은 shell_exec 당신의 PHP 스크립트에서 당신을 얻는 것을 STDOUT을 : 당신은 명령 줄에서 스크립트를 실행할 때

  • , 당신이있어 모두 스트림이 단일 터미널 창에서 공유되기 때문에 여전히 출력이 표시됩니다. PHP 스크립트가 아니라 wget에서 직접보고있는 것입니다.

  • 웹 요청을 만족시키기 위해 Apache 및 브라우저를 통과시키는 경우이 터미널 컨텍스트는 사용자가 보는 결과와 연결이 끊어집니다. 쉘 명령에서

당신은 후자에 전자를 리디렉션 할 수 있습니다 : 이것에

$command = "wget http://mydomain.co/media/bigbigbig.wav 2>&1"; 

코멘트 the documentation for shell_exec 터치에, 특히 — 어 — very first one!

+0

멋진 설명. STDERR 및 STDOUT에주의를 기울이지 않았습니다. – coffeemonitor