У меня есть сервер кодирования видео, созданный на Laravel Forge с nginx. Я пытаюсь запустить тестовый скрипт для удаленного кодирования видео через SSH, используя LaravelCollective SSH package.Запуск PHP удаленно через SSH
Это мой сценарий тестирования (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");
Когда я SSH на сервер и запустить скрипт из командной строки она работает: видео кодируется; скрипт работает.
$ php /home/forge/mydomainname.com/public/test/index.php
Однако, когда я запускаю ту же команду локально в моем приложении Laravel - с помощью пакета SSH - это не кодирует и я не получаю никакого вывода; браузер просто возвращает белую страницу.
SSH::run('php /home/forge/mydomainname.com/public/test/index.php', function($line) {
echo $line.PHP_EOL;
});
Однако тем не менее, если я открываю index.php
, закомментировать команду 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 включен» в мой браузер.
Подводя итог:
- Сценарий будет кодировать видео при его запуске через командную строку на сервере.
- Сценарий не кодирует видео при дистанционном запуске.
- Сценарий выполняет при удаленном запуске.
- WTH?