나는 Lginvel Forge에서 nginx로 설정된 비디오 인코딩 서버를 가지고 있습니다. 나는 LaravelCollective SSH package을 사용하여 SSH를 통해 원격으로 비디오를 인코딩하기위한 테스트 스크립트를 실행하려고합니다. 내가 서버에 SSH 및 작동 명령 줄에서 스크립트를 실행하면SSH를 통해 원격으로 PHP 실행
이 내 테스트 스크립트 (index.php를)
<?php
exec("ffmpeg -I input.mpg -c:v libx264 -preset faster -crf 22 -c:a aac -strict experimental -movflags +faststart -vf scale=360:-1 output.mp4 1> output.txt 2>&1");
입니다 : 비디오 인코딩됩니다; 스크립트가 작동 중입니다. 그러나
$ php /home/forge/mydomainname.com/public/test/index.php
, 내 Laravel 응용 프로그램에 로컬로 같은 명령을 실행할 때 - SSH를 패키지를 사용하여 - 그것은 인코딩하지 않고 내가 어떤 출력을받을 수 없습니다; 브라우저는 그냥 흰색 페이지를 반환합니다. 내가 index.php
을 열 경우
SSH::run('php /home/forge/mydomainname.com/public/test/index.php', function($line) {
echo $line.PHP_EOL;
});
그러나 그러나는 FFmpeg 명령을 주석 및 확인하려면 몇 가지 코드를 추가 exec
이 사용 가능한 경우, 그것은 이 실행하고 출력을 보낼 것입니다, 그래서 SSH 패키지가 실제로 작동하는지 알고 원격으로 스크립트를 실행하는 것.
<?php
// exec("ffmpeg -I input.mpg -c:v libx264 -preset faster -crf 22 -c:a aac -strict experimental -movflags +faststart -vf scale=360:-1 output.mp4 1> output.txt 2>&1");
if(function_exists('exec')) {
echo "exec is enabled";
} else {
echo "exec is disabled";
}
내 브라우저에 "exec is enabled"가 반환됩니다.
요약하면 : 서버의 명령 줄을 통해 그것을 실행할 때
- 스크립트는 비디오를 인코딩합니다.
- 스크립트는 이 아니며은 원격으로 실행할 때 비디오를 인코딩합니다.
- 스크립트 은이 원격으로 실행될 때 실행됩니다.
- WTH?