2013-02-26 4 views
15

初めてshell_exec()を使用しています。私はffmpegシェルスクリプトを使用して私のサーバー上のいくつかのビデオファイルを変換しようとしています。PHP - シェルエラーを画面に表示する方法

私は、ブラウザで以下のコードは、それが返されますNULL:

> ffmpeg -i /var/www/html/sitedomain/httpdocs/tmp/ebev1177.mp4

は私が全体の負荷取り戻す:しかし

var_dump(shell_exec("ffmpeg -i /var/www/html/sitedomain/httpdocs/tmp/ebev1177.mp4")); 

私は、端末での同等のコードを実行すると有用な情報のうちエラーが末尾にあるもの"At least one output file must be specified"

なぜ私のPHPスクリプトにこの情報が返されないのですか?私はそれをエコーすることができますか?

+3

コマンドの最後に '2>&1'を追加して、エラーメッセージを標準出力 – koopajah

答えて

33

エラーデータは、対象プログラムのSTDERRストリームから出力されます。

var_dump(shell_exec("ffmpeg -i /var/www/html/sitedomain/httpdocs/tmp/ebev1177.mp4 2>&1")); 

ます。また利用したい場合があります。あなたは、STDOUTSTDERRをリダイレクトするコマンドに2>&1を追加することにより、あなたが現在見ているストリームをshell_exec()から通常返される文字列によるエラーデータへのアクセスを得ることができますproc_open()を見ると、STDINSTDOUTSTDERRの3つのストリームとしてアクセスできます。これにより、ターゲットプログラムよりもきめ細かい制御が可能で、入力と出力をどのように扱うかが正確に決まります。必要に応じてそれらのログファイルを直接ログファイルに保存します。しかし、これは多くの落とし穴や引っ掛かりの危険を伴うはるかに複雑なメカニズムであることに注意してください。

標準ストリームの詳細は、hereを参照してください。

+0

Aha!にリダイレクトすることができます。それはそれです:) – Ash

+0

まあ、私の一日を節約... upvoteとクッキーを持って! – Ikari