2010年9月8日水曜日

「PHP 5.3.x で推奨されない機能」にひっかかって Uber_Uploader が動かなくなった

追記)2011/8時点での Uber-Uploader の最新版についてはUber-Uploader 6.8.2 の使い方(その1)で述べているので,参考にしてみて欲しい。

個人で細々と web site を運用している。そこで結構重宝してるのが,Uber_Uploader というソフト。以前,web へのファイルのアップロードの進捗状況がわかるようなアップローダーが欲しくていろいろ調べて,uber_uploaderを使った,という感じのことをこのブログに書いた(cgiとutf8とphpとjs)。その時は,Uber Uploaderのバージョン 6.5 を使っていた。その後バージョンアップがなされ,今はバージョン 6.8.2 になっている。バージョン 6.5 から 6.8.2 になるまでに,途中で結構大きな構造の変更がなされ,見た感じはちょっと違ったものになっている。どちらも使えるようになっているが,今日の話題はバージョンの違いではなくて,uber_uploader がうまく働かなくなってしまった話題(以下の現象はバージョンが 6.5 か 6.8.2 かに関係なく発生した)
 web site は,古いノートマシンを使って運用している。われながらかなり危険なことをしてるなぁ,と思っているが,なにせ先立つモノがないと…。OSはFreeBSDを使っている。サーバーに入れてるバージョンは FreeBSD 8.0 にしている。FreeBSD の場合,いろいろなアプリケーションソフトは ports というシステムで管理されている。アプリケーションのアップデートをする場合は portupgrade というアプリケーションを使ってやると,勝手にアップデートしてくれる。めんどくさいので,よく portupgrade -a (全てアップデート対象ならアップデートするという設定)を実行している。多くの場合は特に問題はないのだが,これをやると時々サーバーの動作がおかしくなる時がある。
 この間も portupgrade -a をすると,emacs を使った時の感触が違っていた。どうもカーソルの動きがおかしい。どうやら,emacs のバージョンが22から23に上がり,内部の文字コードが utf8 になったために起こる現象みたいだった。これは,PuTTY の設定で UTF-8 を使う,とするとなんとかそれっぽく動くようになった。
 他にも apache や perl がバージョンアップするといろいろとトラブルに見舞われたりする。Perl の場合は影響が大きく,いろいろなものが動かなくなってしまったりする。それなら portupgrade -a を使わずに一個一個 upgrade すればよさそうなものだが,これが結構数が多くて,めんどくさいからついつい portupgrade -a をしてしまう…


 で,やっと今回の本題に入ろう。今回は portupgrade -a をしたら,急に uber_uploader が働かなくなってしまった。どうなったかというと,
(1) サイトの上の方に「 date 関数は危険だから気をつけろ」みたいなメッセージがいっぱい出てきた。
(2) (1) のメッセージを無視すると,アップロードできそうになるのだが,アップロードボタンを押しても,うんともすんとも言わず,ブラウザのステータス欄に「完了」と出て終わる。かと言って,ファイルはアップロードされていない。普通なら,アップロードボタンを押すと,ファイルをアップロードする様子(進捗状況)が棒グラフで出るはずなのに,何も出ず,ただただ止まってしまう。
 と,こんな感じになってしまった。エラー表示が出ても,ファイルがアップロードさえできればいいのだが,ファイルがアップロードされない,というので困ってしまった。この二つを解決するのに数日かかってしまった。その顛末を書こう。