w2box (Web 2.0風File Repository for PHP) の動かし方

いつも楽しく拝見しているPHPSPOT開発日誌さまにて、おもしろいブツを発見。

PHPで書かれたCoolなweb2.0風ファイルアップローダー

早速、LAN内お遊びサーバーに仕込んでみたものの……なんか、プログレスバーが出ない。あれー、と思ってよくみると

How to enable the upload progress bar ?

Enabling the progress bar can be a bit trickier. That's why it is disabled by default. Before enable it, make sure the script works without it.

プログレスバーを出すのはちょっとトリッキァーです。だからデフォルトでは出ないようにしてあります。出す前にスクリプトが動いているか確認してください

http://labs.beffa.org/w2box/

とか、かいてある。そのあとに、色々ごちゃごちゃかいてあるんだけど、要するに

  • upload.cgiの一行目のshebangとかいうやつ? が正しくperlのパスを指していること
  • パーミッションを正しく設定すること
  • その上でupload.cgiを開いて、「CGI Working」と出れば成功

ほいじゃ、ってんでちょっとやってみたけど、うまくいかない。

hoge:~/public_html/tmp$ ./upload.cgi
: bad interpreter: No such file or directory
hoge:~/public_html/tmp$

hoge:~/public_html/tmp$ perl ./upload.cgi
Content-type: text/html

CGI Working
hoge:~/public_html/tmp$

んー、と思って、ちょっと思いつきで、こうしてみると……

hoge:~/public_html/tmp$ od -c upload.cgi | head
0000000   #   !   /   u   s   r   /   b   i   n   /   p   e   r   l  \r
0000020  \n   #   !   c   :   /   p   e   r   l   /   b   i   n   /   P
0000040   e   r   l   .   e   x   e  \r  \n   #       i   f       y   o
0000060   u   '   r   e       u   s   i   n   g       w   i   n   d   o
0000100   w   s   ,       y   o   u       s   h   o   u   l   d       r

……うーん、\r \nって……

emacsで開いてC-x RET fしてunixとして保存しなおしたらうまくいった。(うちのdebianのunzipがおかしいんだろうか?)

んで最後に、tmpディレクトリが書き込めることを確認してから config.php 内のupload_progressbarの値を

//activate upload progress bar (in dev)
$config['upload_progressbar']=true;

とすると、うまくいった。

ちゃんと読んでないけど、Perlでかかなきゃならない理由でもあったのかな? タイトルには「for PHP」とかかいてあるのにね。

追記:

ここにかいても誰も見ないだろうと思ったので作者にメールしてみた。

I am really impressed by your work,
It's neat, cute, and highly useful for 
uploading pretty big file.

By the way, when I tried your script on
my Linux box, upload.cgi didn't work well.

I've tweaked your upload.cgi around and
finally found that your upload.cgi has 
been shipped with \r \n Microsoft style
new lines and my /bin/bash complaied about
it. 

I wonder if it is intended, because if so,
the first line (shebang) may be Perl.exe,
instead of /usr/bin/perl.

Anyway, great progress bar, I really enjoy it.
Let me say thank you very much.

最後の二行が最低最悪の嫌味にとられるかもしれない、と気づいたのは送信ボタンを押したあとであった…… (素で面白かったよありがとう、と思ったんだけど)

んで、"That wasn't intended." と返事が来た。修正してくれたみたいです。

全体的に陰険な感じだよなー俺のメール、今みると。 まあ、改行コードがこうなってるのってどうなのよって感じはするわけだけど。