前提・実現したいこと
さくらのレンタルサーバーを使っています。
phpファイルからexec
関数でffmpeg
を実行するもののエラーになります。
phpからffmpegを実行できるようにしたいです。
発生している問題・エラーメッセージ
サーバーのコントロールパネルからエラーログが確認できるのですが、下記の表示になっていました。
[日付] [cgi:error] [pid 数字] [client ipアドレス] AH01215: sh: ffmpeg: not found: /home/sample/www/functions/video.php, referer: http://sample.sakura.ne.jp/
FTP接続したフォルダをVSCodeで開き、VSCodeのターミナルからffmpeg
コマンドを実行すると、バージョンやコマンドのオプションの一覧などは表示されました。
しかし、ブラウザから実行すると上記のエラーが表示されます。
該当のソースコード
ディレクトリの構造は下記の通りです。
. ├── .cshrc ├── bin │ ├── ffmpeg │ └── ffprobe └── www ├── index.php └── functions └── video.php
.cshrc
# 省略 set path = (/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin $HOME/bin) # 省略
video.php
php
1<? 2 3function video() 4{ 5 $cmd = 'ffmpeg -i input.mp4 -c copy output.mp4'; 6 shell_exec($cmd); 7}
関係ありそうな部分だけ抜粋しています。
そのほか必要な情報がありましたら、教えていただきたいです。
試したこと
この記事の「前提: ffmpeg コマンドの導入」を参考に、FFmpeg Static buildsを解凍して、binディレクトリにffmpegとffprobeを入れました。
ターミナルからwget
を実行したもののフォルダが表示されなかったので、ローカルのPCでダウンロード→解凍→コピーしました。
そのあとブラウザからphpを実行してみましたが、「発生している問題・エラーメッセージ」記載のエラーが表示されました。
- この記事を参考に諸々試みましたが、手順に含まれている以下のコマンドが使えませんでした。
- uname
- gmake
- gcc
unameとgccはバージョンの確認のみに使用しているように見受けられたため、gmakeコマンドだけ使えるようにしようとgmakeについて調べたとものの、makeというコマンドの派生である旨しか理解できませんでした。
ので、とりあえずmakeコマンドは使えるようにしました。
次に「NASM のインストール」の手順に進みwget
を実行したのですが、1.
の時と同じくVSCodeのディレクトリツリーに表示されなかったので、ローカルPCでダウンロード→解凍→ルートにコピーをしました。
次の手順である./configure ./configure --prefix=${HOME}
を実行したところ、開くアプリケーションの指示が求められたため、とりあえずメモ帳で開き、書いてあったコードをとりあえず保存しました。
次の手順であるgmake
コマンドは使えないので、とりあえずmake
を実行してみましたが、下記の表示がターミナルに表示されました。
make: *** No targets specified and no makefile found. Stop.
ルートにコピーしたフォルダには、Makefile.in
というファイルは含まれていました。
補足情報(FW/ツールのバージョンなど)
- PC: Windows 10
- サーバーOS: FreeBSD 11.2-RELEASE-p14 amd64
あなたの回答
tips
プレビュー