1

/usr/local/bin/ffmpeg のフルバスを指定せずに ffmpeg コマンドを認識するには、Apache /php が必要です。

コマンド ラインから ffmpeg を呼び出すとプログラムが実行される Web 経由で php から ffmpeg を呼び出すとプログラムが実行されない Web 経由で php から /usr/local/bin/ffmpeg を呼び出すとプログラムが実行される

理由: PHP スクリプトが youtube-dl (コンパイルされたプログラム) を呼び出し、内部で ffmpeg を実行します。

事前に感謝します-ffmpegパスを試しました: which ffmpeg /usr/local/bin/ffmpeg

echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin


#php code for testing:
$output = shell_exec('/usr/local/bin/ffmpeg 2>&1');
echo "shell exec /usr/local/bin/ffmpeg <pre>$output</pre>";
#Response:
ffmpeg version 2.5.3 Copyright #(good)

#Second php code for testing:
$output = shell_exec('ffmpeg 2>&1');
echo "shell exec <pre>$output</pre>";
#Response:
sh: ffmpeg: command not found #(bad)
4

1 に答える 1

1

PHP はデフォルトを使用して/profileでコマンドを実行します。には含まれていないようです。問題を解決するには、デフォルト パスに明示的に追加します。backticksshell_exec/usr/local/bin$PATH/usr/local/bin

sudo echo '$PATH=/usr/local/bin:$PATH' > /etc/profile.d/php_needed.sh

最新のシステムでは、フォルダーのコンテンツ全体/etc/profile.dがプロファイルに含まれます。

于 2015-02-14T06:08:11.030 に答える