2011年8月19日金曜日

Uber-Uploader 6.8.2 の使い方(その1)

追記2)2017/6に,FreeBSD で fine-uploader を使ってみた(その1)というのを書いた。 そこでは fine-uploader という JavaScript のライブラリを使ったファイルのアップローダーについて書いている。 Uber Uploader はすでに古く更新されていないので,fine-uploader など新しいアップロードライブラリを使うことをお薦めする。
追記)2015/12時点で Uber-Uploader がうまく働かなくなった。その件について Uber-Uploader 6.8.2 が気づいたら動かなくなっていた。どうやら CGI.pm の更新が原因みたい。で述べているので,参考にしてみて欲しい。
Uber-Uploader 6.8.2 の使い方(その2)
Uber-Uploader 6.8.2 の使い方(その3)
Uber-Uploader 6.8.2 の使い方(その4)

以前ブログで Uber-Uploader について少し書いたことがある。タイトルに Uber-Uploder という言葉はなかったが…。その際の Uber-Uploder のバージョンは 6.5 だった。その後,数度のバージョンアップがあり,今はバージョンが 6.8.2 になっている。今回,その使い方について書いてみた。ちょっと長いので,数回に分けようと思っている。

 まずはシステムの前提を述べる。ここの記述している内容は,ほぼ全てFreeBSDで実際に実行している(コピーを間違えていなければだが…)。しかし,Uber-Uploader 自体は apachecgiphp が使えれば特定のシステムでなくても使えるので,ディレクトリ名などを必要に応じて書き換えれば使えるはず,である(絶対の自信はないが…)

以下のような前提で話を書こう。
(前提) ここでは,/usr/local/www/data/ 以下に web server のファイルが置いてあるとしよう。
 今回は,そのディレクトリの下に,uber_uploader/ というディレクトリを作り,
さらに,その下に cgi-bin/ という cgi 用のディレクトリを置くとしよう。
また,アップロードされたファイルの置き場所も uber_uploader/ の下に
uploadfiles/ というディレクトリを作っておくことにする。
つまり,
  /usr/local/www/data/uber_uploader/:Uber-Uploader のメインのディレクトリ
  /usr/local/www/data/uber_uploader/cgi-bin/:cgi用のディレクトリ
  /usr/local/www/data/uber_uploader/uploadfiles/:アップロードされたファイル用のディレクトリ
ということになる。


まずはインストール(ファイルの設置の仕方)について述べよう。ネットで検索するといろんなサイトから Uber-Uploader をダウンロードすることができる。 ダウンロードすると圧縮されたファイルが得られるので,それを展開しておく。

(0) 必要な条件
添付されている文章(INSTALL_AND_FAQ.HTML)に書かれている必要な条件は以下の4つ。

(a) unixやlinux というOS
これはFreeBSDならOK。実際に働いてるし…。

(b) apache(web サーバー)
FreeBSDではportsから簡単にインストール可能。web サーバーの設定で,cgi を使えるようにしておくことが必要。
(ここの例では,/usr/local/www/data/uber_uploader/cgi-bin/ で cgi が使えるように httpd.conf を書き換え,apache を再起動する)

(c) プログラム言語としてのPerl(以下の4つのモジュールが必要,CGI, FILE::COPY, FILE::PATH, IO::File)
これもFreeBSDなら最初から入っている。モジュールも多分デフォルトで入っていたと思うが,必要ならインストールする。

(d) php
FreeBSDならインストールが必要である。
2010/9 現在では,php5 と php5-extentionsをマルチバイト文字とutf-8対応オプション付きでインストールした。php のインストール後,apache を再起動しないといけない。

ここで Uber-Uploader の処理の流れと対応するファイル名を記そう。

(I) ubr_default_config.phpubr_ini.php
この2つは設定ファイルである。

(II) ubr_file_upload.phpubr_file_upload.js
ファイル・アップローダーの入口になるのが ubr_file_upload.php である。
ここでは,ファイル名の指定や,その他入力して欲しいデータ(名前など)の入力があり,
Javascript を使って,入力値のチェックなども行なっている。
Javascript は ubr_file_upload.js に記述されている。

(III) ubr_upload.pl
実際のアップロードの作業をする perl のスクリプトである。

(IV) ubr_finished.phpubr_finished_lib.php
アップロード完了後の処理をするphpとそこで使われるlibrary用のphpである。



(1) ubr_upload.pl の配置$TEMP_DIRの指定
cgi が使える領域(/usr/local/www/data/uber_uploader/cgi-bin/)にubr_upload.plを配置する。そして,ubr_upload.pl のパーミッションを実行可能にしておく。
chmod 755 ubr_upload.pl
かつ,スクリプト(ubr_upload.pl)の先頭行の Perl の path を確認しておく。
#!/usr/bin/perl -w
これは OS によって微妙に異なっているので,確認しておくこと。また,ubr_upload.pl の先頭付近にある変数 $TEMP_DIR を指定する。この際,web browser からアクセス出来ない場所を指定すること。さらに,パーミッションは「777」にしておく。必要に応じて(存在していなければ,)設定したディレクトリを作成しておく。
(例)$TEMP_DIR = '/tmp/ubr_temp/'; (私はこれを選んでいる)
   $TEMP_DIR = '/var/tmp/ubr_temp/';
   $TEMP_DIR = '/usr/home/roger/ubr_temp/';

(2) ubr_upload.pl 以外のファイルの配置
「ubr_upload.pl」以外のファイルを web の cgi が使えない領域(ディレクトリ)に配置する。ubr_upload.pl 以外は全て同じディレクトリがわかりやすいと思う。
(ここの例では /usr/local/www/data/uber_uploader/

(3) ubr_default_config.php の設定
ubr_default_config.php の中の変数 $_CONFIG['upload_dir'] (アップロードされたファイル用のディレクトリ,URLではない)を指定する。これは一般にアクセス可能でも不可能でもよい。必要に応じて(存在していなければ,)設定したディレクトリを作成しておく。

(注意)アップロード用のディレクトリのパーミッションは,「777」にするか,
あるいは,group を「www」にしておいて,パーミッションを「771」にする。
そうしないと,apache がアップロードされたファイルをアップロード用のディレクトリに書き込めない。
(例)$_CONFIG['upload_dir'] = '/usr/local/www/data/uber_uploader/uploadfiles/'; (ここでの設定)
   $_CONFIG['upload_dir'] = '/tmp/ubr_uploads/';
   $_CONFIG['upload_dir'] = '/var/www/html/ubr_uploads/';
   $_CONFIG['upload_dir'] = '/usr/local/www/htdocs/ubr_uploads/';
   $_CONFIG['upload_dir'] = $ENV{'DOCUMENT_ROOT'} . '/ubr_uploads/';

ほかにも,
$_CONFIG['allow_extensions']:アップロード可能な拡張子(zip などを追加するといいかも)
$_CONFIG['disallow_extensions']:アップロード不可の拡張子(docやdocx などを追加してもよいかも)
$_CONFIG['log_dir']:ログを格納するディレクトリ(実在しないといけない。なければ作成しておく)
$_CONFIG['redirect_url']:cgiから見て相対的に指定(デフォルトは相対指定になってないかも)
$_CONFIG['path_to_upload']:web からみたアップロードファイル格納場所のURL(相対指定がよい)
$_CONFIG['max_upload_size']:アップロードできるファイルサイズ(デフォルトは 5*1024*1024 = 5242880 = 5MB)
$_CONFIG['send_email_on_upload']:アップロード後にメールを送信するかどうかのフラグ(1なら送信する)
$_CONFIG['to_email_address']:アップロード後のメールの宛先
$_CONFIG['from_email_address']:アップロード後のメールの送信元
$_CONFIG['email_subject']:アップロード後のメールのタイトル
などをアレンジしておくといいと思う。

以下にここでの設定を書いておこう。
$_CONFIG['allow_extensions']     = '(wma|wmv|mpg3|mpg|mpeg|avi|mov|jpg|jpeg|gif|bmp|png|tiff|zip|lha|tar|gz)';
$_CONFIG['disallow_extensions']  = 
 '(sh|php|php3|php4|php5|py|shtml|stm|shtm|phtml|html|htm|js|jsp|asp|aspx|exe|cgi|pl|plx|htaccess|htpasswd)';
$_CONFIG['log_dir']              = '/usr/local/www/data/uber_uploader/uploadfiles/';
$_CONFIG['redirect_url']         = '../ubr_finished.php';
$_CONFIG['path_to_upload']       = './uploadfiles/';
$_CONFIG['max_upload_size']      = 524288000;  // Maximum upload size (500 * 1024 * 1024 = 5242880 = 500MB).
$_CONFIG['send_email_on_upload'] = 1;          // Send an email when the upload is finished.
$_CONFIG['to_email_address']     = 'poyopoyo@xxxx.com';
$_CONFIG['from_email_address']   = 'hogehoge@yyyy.com';
$_CONFIG['email_subject']        = 'Uber Uploader';

ほかにも,自分で使いたいので,以下の2つを加えている。
$_CONFIG['my_title']             = 'Poyopoyo';              // title of the web site
$_CONFIG['my_title_jap']         = 'ぽよぽよアップローダー';   // title of the web site

(4) ubr_ini.php の設定
ubr_ini.php の中の以下の変数をセットする。注意すべきは ubr_upload.pl を入れておくディレクトリ($_INI['path_to_upload_script'])。 ubr_upload.pl だけはcgiが使えるディレクトリにないといけない。他のものは基本的に uber-uploaderのメインのディレクトリに入れておけばよい。

以下にここでの値を書こう。先頭の path_to_upload_script 以外はデフォルトのままだったりするが…。
(例)$_INI['path_to_upload_script']       = './cgi-bin/ubr_upload.pl';
   $_INI['path_to_link_script']         = 'ubr_link_upload.php';
   $_INI['path_to_set_progress_script'] = 'ubr_set_progress.php';
   $_INI['path_to_get_progress_script'] = 'ubr_get_progress.php';
   $_INI['path_to_js_script']           = 'ubr_file_upload.js';
   $_INI['path_to_jquery']              = 'jquery-1.3.2.min.js';
   $_INI['path_to_block_ui']            = 'jquery.blockUI.js';
   $_INI['path_to_css_file']            = 'ubr.css';
この他にも,$TEMP_DIR$DATA_DELIMITER があるが,これらは ubr_upload.pl の中の記述と同一でないといけない。

(5) アップロードされたファイルの格納場所(「ubr_default_config.php」の中の「$_CONFIG['upload_dir']」で指定)
以下のいずれか一方のファイルを置く
(ディレクトリのリストを見られないための処置)
(ここでは /usr/local/www/data/uber_uploader/uploadfiles/
(a) 「.htaccess」:中身は「Options -Indexes」のみでよい
(b) 「index.html」:中身はなんでもよいが,最低限「<html><body></body></html>」と書いておきましょう。

(6) INSTALLING MULTIPLE CONFIG FILES(複数の設定ファイル)
複数の設定ファイルを使いたい時には,ubr_ini.php$_INI['multi_configs_enabled'] を1にセットし,ubr_default_config.php 以外に ubr_POYOPOYO_config.php などの設定ファイルを用意しておく。

さらに,ubr_file_upload.phpubr_link_upload.php の中 if($_INI['multi_configs_enabled']){ に続く部分を以下のようにする。
if($_INI['multi_configs_enabled']){
        if($_SESSION['user'] == "tom"){ $config_file = 'ubr_tom_config'; }
        elseif($_SESSION['user'] == "dick"){ $config_file = 'ubr_dick_config'; }
        elseif($_SESSION['user'] == "harry"){ $config_file = 'ubr_harry_config'; }
        elseif($_SESSION['user'] == "sally"){ $config_file = 'ubr_sally_config'; }
        else{ $config_file = 'ubr_default_config'; }
}

以上の設定をすると,最低限 Uber-Uploader が働いて,ファイルをアップロードできる。
ここでちゃんとアップローダーが働くことを確認しておく。これ以降は,それぞれのサイトに合わせたアレンジについて述べる。
次回に続く

0 件のコメント: