500 Internal Server Error
テストユーザから動画をアップロードしたらいきなりエラー。
1 2 |
500 Internal Server Error http://192.168.33.10/cgi-bin/uu_upload.pl?tmp_sid=d0c0d09b7649e732d7c8bfd7ca41b372 |
エラーログを確認。/var/log/httpd/error_log
1 2 |
[error] [client 192.168.33.1] (2)No such file or directory: exec of '/var/www/html/cgi-bin/uu_upload.pl' failed, referer: http://192.168.33.10/uploader.php [error] [client 192.168.33.1] Premature end of script headers: uu_upload.pl, referer: http://192.168.33.10/uploader.php |
Perlのファイルに不適切な文字コードでも入っているのだろうか。
ネットで検索した情報から、以下の2つのファイルの先頭に — を追加してみる。
/var/www/httpd/cgi-bin/uu_ini_status.pl
/var/www/httpd/cgi-bin/uu_upload.pl
1 2 3 |
#!/usr/bin/perl ↓変更 #!/usr/bin/perl -- |
すると500 Internet Server Errorは解決。動画のアップロードは正常終了するようになった。
アップした動画が表示されない
アップロード自体は成功している模様。
1 2 3 4 5 6 |
# cd /var/www/httpd/uploads/avi # ls -al total 43464 drwxrwxrwx 2 apache apache 4096 Apr 7 20:41 . drwxrwxrwx 6 apache apache 4096 Apr 7 00:19 .. -rw-rw-rw- 1 apache apache 44434466 Apr 7 20:41 QhIORHigKtGP1ClzTKpr.mp4 |
エンコードエラーが起きてるっぽい。
1 2 3 4 5 6 7 8 9 10 |
# cat /var/www/httpd/logs/convertor_log.txt --------------------------------------------------------------------- Converting (QhIORHigKtGP1ClzTKpr.mp4) started - Tue - Apr 07, 2015 @ 08:41 PM --------------------------------------------------------------------- /usr/bin/mencoder /var/www/html/uploads/avi/QhIORHigKtGP1ClzTKpr.mp4 -o /var/www/html/uploads/QhIORHigKtGP1ClzTKpr.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=800:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -vop scale=560:420 -srate 22050 sh: /usr/bin/mencoder: Permission denied --------------------------------------------------------------------- Running mencoder again, optional command /usr/bin/mencoder /var/www/html/uploads/avi/QhIORHigKtGP1ClzTKpr.mp4 -o /var/www/html/uploads/QhIORHigKtGP1ClzTKpr.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=800:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf scale=560:420 -srate 22050 sh: /usr/bin/mencoder: Permission denied |
何が悪いのかわからないので、1つずつ可能性を潰していく。
mencoderは存在した。
1 2 |
# ls -a /usr/bin/mencoder -rwxr-xr-x 1 root root 8996189 Mar 20 2013 /usr/bin/mencoder |
mencodeはコマンドラインから実行できた。
1 2 3 4 |
# /usr/bin/mencoder MEncoder SVN-r31628-4.1.2 (C) 2000-2010 MPlayer Team No file given Exiting... (error parsing command line) |
ログに記録されたコマンドを手打ちしてみたらエラーになった。アップした動画が壊れているのか?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# /usr/bin/mencoder /var/www/html/uploads/avi/QhIORHigKtGP1ClzTKpr.mp4 -o /var/www/html/uploads/QhIORHigKtGP1ClzTKpr.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=800:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf scale=560:420 -srate 22050 MEncoder SVN-r31628-4.1.2 (C) 2000-2010 MPlayer Team success: format: 0 data: 0x0 - 0x2a60422 libavformat file format detected. [lavf] stream 0: video (h264), -vid 0 [lavf] stream 1: audio (aac), -aid 0, -alang und VIDEO: [H264] 426x240 24bpp 29.970 fps 299.8 kbps (36.6 kbyte/s) [V] filefmt:44 fourcc:0x34363248 size:426x240 fps:29.970 ftime:=0.0334 ========================================================================== Opening audio decoder: [faad] AAC (MPEG2/4 Advanced Audio Coding) AUDIO: 48000 Hz, 2 ch, s16le, 62.4 kbit/4.06% (ratio: 7798->192000) Selected audio codec: [faad] afm: faad (FAAD AAC (MPEG-2/MPEG-4 Audio)) ========================================================================== ** MUXER_LAVF ***************************************************************** REMEMBER: MEncoder's libavformat muxing is presently broken and can generate INCORRECT files in the presence of B-frames. Moreover, due to bugs MPlayer will play these INCORRECT files as if nothing were wrong! ******************************************************************************* OK, exit. Opening video filter: [expand osd=1] Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1 Opening video filter: [scale w=560 h=420] ========================================================================== Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264) ========================================================================== MP3 audio selected. Pos: 0.0s 1f ( 2%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0] 1 duplicate frame(s)! VIDEO CODEC ID: 22 AUDIO CODEC ID: 15001, TAG: 0 Writing header... [flv @ 0xc3d0640] dimensions not set Floating point exception # |
Wikiにトラブルシュートがあったのでなぞる。
PHPmotion Wiki: Debugging FFPmpeg – Mencoder
http://wiki.phpmotion.com/ServerVPSDebugging
(1)~(6)の手順に従って手作業で処理したら静止画キャプチャも動画エンコードも出来たので、関連するモジュールのインストールには問題なさそう。
書かれているチェックポイントを順に確認。まずは最初のチェックポイント。
You server does not support what is called command line php. This gives phpmotion the ability to run these same command when a video finishes uploading
インストールされている。問題ない。
1 2 |
$ yum list installed | grep php-cli php-cli.x86_64 5.1.6-45.el5_11 installed |
次のチェックポイント。
Your server has the **exec** command disabled in your php settings. PHPmotion needs access to this command in order to be able to execute command via ssh shell. To check if this is the case, upload a [[http://wiki.phpmotion.com/HelpPHPinfoFile phpinfo]]file to your server and check the **disable_functions** section to see if **exec **is listed there.
phpinfoを表示してみる。問題ない。
1 |
disable_functions - Local Value: no value / Master Value: no value |
次のチェックポイント。
You have some security features installed on your server that are preventing PHPmotion access to ffmpeg and mencoder.
This could be either:
– You have “open_basedir” or “safe_mode” restriction set in your php. Check using a phpinfoe
– You have either “Selinux” or “Suhosin” installed on your server and its restricting PHPmotion from working correctly
これらもphpinfoを表示して確認。問題ない。
1 2 |
open_basedir - Local Value: no value / Master Value: no value safe_mode - Local Value: off / Master Value: off |
悪いところはなさそう。さらに読み進む。
HINT
If you managed to convert videos is ssh but you still dont see them when you upload. Try this
Upload a video as normal on your website
Once complete, open the url http://www.yourdomain.com/convertor.php
Check to see if the video is now showingif the video show after doing this, you should check to see if curl is installed on your server. If its not installed, you should consider installing it.
良くわからないけど、curlはインストールされていないのでインストールしておく。
1 |
# yum install -y curl |
結局・・・
さっきの手作業で気になったのは、動画ファイルの拡張子がmpgだったこと。僕がアップした動画ファイルの拡張子はmp4。試しに拡張子をmp4からmpgに変えてアップしたらサーバー上で無事にエンコードされてサイトで動画が観れるようになった。アップする動画ファイルに相性がありそうな感じ。