2012-05-02 3 views
0

PHP의 shell_exec 스크립트를 통해 래이 엔코더를 실행하는 데 문제가 있습니다.php shell_exec의 Lame encoder 명령이 http 서버를 통해 작동하지 않습니다.

그리고이 스크립트만으로 내 문제가 발생하여 터미널에서 PHP 명령을 실행하면 스크립트가 작동하지만 브라우저에서 열면 작동하지 않는 것으로 나타났습니다. 필자는 모든 파일의 permissios를 777로 설정했습니다.

여기 것은 내가 PHP는 명령을 터미널에서 실행하는 경우 해당 스크립트가 작동되는 코드

< ?php 

exec('lame -f -V 9 ../furniture/sound/107887.wav ../furniture/sound/107887.ogg'); 

하지만 브라우저를 통해하지 않습니다.

오,이 scirpt는 실제로 최대 2 초가 걸리므로 시간 초과 또는 기타 문제가 발생하지 않습니다. PHP 나 nginx 오류도 발생하지 않습니다.

어떻게 해결할 수 있습니까?

+0

PHP를 nginx를 통해 실행할 때'exec'이 비활성화 될 가능성이 있습니다. 내 머리 꼭대기에서 어떻게 사용할 수 있는지 기억할 수는 없습니다. (일반적으로 보안 구멍이있어 장애가 발생해야합니다.) 최소한 google에 뭔가를 제공해야합니다 ... – Endophage

+0

명령이 오류를 반환합니까? – jarchuleta

+0

아니요, 문제는 초기 스크립트에서 몇 가지 shell_exec 명령을 실행하여 훌륭하게 작동하는 것입니다. 이 코드가있는 스크립트 –

답변

2

는 PHP의 실행 PATH에 절름발이가 : 당신은 간부의 두 번째 선택적 매개 변수를 사용하여이를 찾을 수 있습니까? lame/usr/bin/lame 또는 다른 것으로 바꾸어보세요.

파일 인수에 대한 상대 경로 이름은 어떻습니까? ../furniture/ 등은 PHP에서 보는 현재 디렉토리에서 정확합니까? 의심스러운 경우 전체 경로 이름으로 바꾸고 문제가 해결되는지 확인하십시오.

언급 할 가치는 적지 만 언급 할만한 가치가 있습니다. lame 자체에 실행 가능 비트가 모두 설정되어 있는지 확인하고자 할 수 있습니다. 파일을 소유하고 있으며 소유자 만 실행할 수있는 경우 아파치는 파일을 실행할 수 없습니다.

+0

/usr/local/bin/lame을 사용했습니다. 고맙습니다. –

0

웹 서버에서 작동하지 않는 데는 자원 또는 권한과 관련하여 여러 가지 이유가있을 수 있습니다.

<?php 
$output = ""; 
exec('lame -f -V 9 ../furniture/sound/107887.wav ../furniture/sound/107887.ogg',$output); 
echo $output; 
?>