2015年12月17日木曜日

Uber-Uploader 6.8.2 が気づいたら動かなくなっていた。どうやら CGI.pm の更新が原因みたい。

追記)2017/6に,FreeBSD で fine-uploader を使ってみた(その1)というのを書いた。 そこでは fine-uploader という JavaScript のライブラリを使ったファイルのアップローダーについて書いている。 Uber Uploader はすでに古く更新されていないので,fine-uploader など新しいアップロードライブラリを使うことをお薦めする。
Uber-Uploader 6.8.2 についてはUber-Uploader 6.8.2 の使い方(その1)で述べているので,参考にしてみて欲しい。

 Uber-Uploader 6.8.2 を使っているが,いつからかはわからないが 2015/12 に気づいたら動かなくなっていた。

症状としては,アップロードをしようとはするが,
  Failed to assign CGI temp directory: Inappropriate ioctl for device
と表示が出て止まってしまった。

 この表示を見る限り,cgi ルーチンが temporary directory 関連のエラーを起こしていそう,というがわかった。 しかし,それだけだと情報が足りないので,次に /var/log/httpd-error.log のログを見てみた。 すると,下記のようなエラーが表示された。
------------------------------------------------
private_tempfiles has been deprecated at /usr/local/lib/perl5/site_perl/CGI.pm line 3213.
Died on line 162 at /usr/xxxx/xxxx/uber_uploader/cgi-bin/ubr_upload.pl line 803.
[Thu Dec 17 17:48:24.527624 2015] [cgid:error] [pid 75620] (32)Broken pipe: [client aaa.bbb.ccc.ddd:57696] AH02651: Error writing request body to script usr/xxxx/xxxx/uber_uploader/cgi-bin/ubr_upload.pl, referer: http://xxx.yyy.zzz.jp/uber_uploader/
------------------------------------------------
 わかりにくいが,これは3行の文章で,1行目は CGI.pm の中で「private_tempfiles」は非推奨と言われているみたいだった。 2行目は ubr_upload.pl の 803 行目で止まった,と書いてある。 3行目はよくわからないが,とりあえず ubr_upload.pl でエラーが起こっている,ということを意味していることだけはわかった。