私は、LARGEL FORGEでnginxを使ってビデオエンコードサーバーを設定しました。私はLaravelCollective SSH packageを使用して、SSH経由でビデオをリモートでエンコードするテストスクリプトを実行しようとしています。SSH経由でリモートで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");
です:ビデオがエンコードされています。スクリプトが動作しています。しかし
$ 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 enabled」が返されます。
要約すると:サーバのコマンドラインを介してそれを実行しているとき
- スクリプトはビデオをエンコードします。
- スクリプトはではありません。は、リモートで実行しているときにビデオをエンコードします。
- スクリプトは、リモート実行時にと実行されます。
- WTH?