2013-02-26 3 views
15

처음으로 shell_exec()을 사용하고 있습니다. ffmpeg 셸 스크립트를 사용하여 서버의 일부 비디오 파일을 변환하려고합니다.PHP - 쉘 오류를 화면에 울리는 방법

내가 브라우저에서 아래의 코드는, 그것은 반환 NULL :

> ffmpeg -i /var/www/html/sitedomain/httpdocs/tmp/ebev1177.mp4

내가 전체 부하 다시 얻을 : 그러나

var_dump(shell_exec("ffmpeg -i /var/www/html/sitedomain/httpdocs/tmp/ebev1177.mp4")); 

내 터미널에서 해당 코드를 실행하면 유용한 정보 중에서 오류로 끝나는 부분 "At least one output file must be specified"

왜 내 정보가 내 PHP 스크립트로 전달되지 않습니까? 나는 그것을 반향시킬 수 있는가?

+3

명령 끝에 '2> & 1'을 추가하여 오류 메시지를 표준 출력 – koopajah

답변

33

오류 데이터는 대상 프로그램의 STDERR 스트림에서 출력됩니다.

var_dump(shell_exec("ffmpeg -i /var/www/html/sitedomain/httpdocs/tmp/ebev1177.mp4 2>&1")); 

또한 수행 할 수 있습니다 : 당신은 STDOUTSTDERR를 리디렉션 명령에 2>&1를 추가하여 현재보고있는 스트림을 shell_exec()에서 정상 반환 된 문자열을 통해 오류 데이터에 액세스 할 수 있습니다 proc_open()을보고 STDIN, STDOUTSTDERR에 액세스 할 수있게 해주는 3 개의 개별 스트림으로 대상 프로그램에 대한 세분화 된 제어와 입력 및 출력 처리 방법을 정확하게 조정할 수 있습니다. 원하는 경우 로그 파일에 직접 저장할 수 있습니다. 이것이 많은 함정과 위험을 감수하는 훨씬 더 복잡한 메커니즘이라는 것을 알아 두십시오.

표준 스트림에 대한 자세한 내용은 here을 참조하십시오.

+0

Aha!로 리디렉션 할 수 있습니다. 저기있다 :) – Ash

+0

글쎄, 내 하루를 저장 ... upvote과 쿠키를 가지고! – Ikari

관련 문제