概要とセットアップ
戻る
ソフトウェア名: Files(WEBファイル共有PHPスクリプト) バージョン: Ver.2.6.2 ファイル名: filesVVV-YYYYMMDD.tgz VVV : バージョンNo. YYYYMMDD : 更新年月日 著作権者名: ソフトウェア開発 GUSUKU http://www.gusuku.org 最終更新日: 2014/05/23 概要: このプログラムは、PHP4が使用可能なWEBサーバーで上で、ファイル共有機能を 提供するPHPスクリプトです。 特徴: WEBサーバーに共有フォルダを作成し、クライアントからブラウザを使用して ファイルのアップロードやダウンロードが行えます。 サーバーの共有フォルダの中には、複数階層のサブフォルダを作成することが でき、ファイルの削除、ファイルのコメント編集ができます。 カットバッファを使用して、ファイルの切り取り、コピー、貼り付け等の機能 を提供します。 利用者別の複数の共有フォルダを管理することができます。 各々の共有フォルダは、独立した先頭フォルダを持ち、互いのフォルダ間では 参照やファイルコピーなどは出来ません。ユーザー登録も別に行います。 FTPやSSH等が使用できない環境で、ファイルの受け渡しをする際に、メールに 添付したのではサイズが大き過ぎる、といった場合に使用することを想定して います。 ログイン時の認証には、MD5ハッシュを使用しています。 PHPのセッションIDと、パスワードのMD5ハッシュを組み合わせ、それをさらに MD5ハッシュ関数にかけるといった方法で暗号化しています。 動作環境: Linux + Apache + PHP5 の組み合わせでしか検証していません。 (PHP4が使用できるHTTPサーバーなら、使えるかもしれません) ログイン処理やページの切り替え処理にJavaScriptを使用しているため、 JavaScriptとが動作することがクライアントの条件になります。 動作検証は以下の環境で行っています。 サーバー: CentOS6.5 + Apache 2.2.15 + php 5.3.3 Fedora Core 8 + Apache 2.2.8 + php 5.2.6 Ubuntu 8.10 + Apache 2.2.9 + php 5.2.6 クライアント: Windows7 + Firefox 29.0.1 WindowsXP Pro + Firefox 3.0.4 WindowsXP Pro + InternetExplorer7 WindowsVista Ultimate + Firefox 3.0.4 WindowsVista Ultimate + InternetExplorer7 準備: WEBサーバーでPHPが使えるようにしておきます。 共有フォルダを作成する場所がWEBサーバーから書込みきるように設定されて いる必要があります。(HTTPサーバーのユーザーが書込み可能にしておく。) PHPではファイルをアップロードできるようにしておきます。 /etc/php.ini の設定項目の例 file_uploads = On --> 必須 upload_max_filesize = 10M --> アップロード最大ファイルサイズ post_max_size = 10M --> アップロード・ファイルサイズに影響 インストール: HTTPサーバーがアクセス可能で、PHPスクリプトが実行可能なディレクトリに アーカイヴを展開します。 filesXXX(XXXはバージョン番号)というディレクトリが作成され、その中に スクリプトファイルが展開されます。 ex: tar zxvf filesXXX.tgz (XXXはバージョン番号) バージョンアップ: バージョンアップする場合は、設定ファイルとパスワードファイル以外の 既存のスクリプトファイルを上書きします。 設定ファイルは、追加項目のみを既存の設定ファイルに追加するか、新しい 設定ファイルに既存の設定ファイルの設定内容の変更を加えて使用してください。 データ用のフォルダの内容は変更する必要はありません。 HTMLで使用する文字コードが、デフォルトでは us-ascii になっています。 運用する環境にあわせて、後述する言語設定で変更してください。 (その際も既存の設置ファイル files.confの内容を反映するのを忘れないように してください。) ファイル構成:( filesXXX の XXX はバージョン番号) filesXXX/ スクリプト格納ディレクトリ README.txt このファイル(UTF-8版) README.euc-jp このファイル(EUC-JP版) README.shift-jis このファイル(Shift-JIS版) README.us-ascii このファイル(英語版) confmenu.php 共有フォルダ設定メニュー cut.php ファイル/フォルダのカット及びコピー処理 delconf.php 作成済みの共有フォルダ削除処理 delete.php ファイル/フォルダの削除処理 dirlist.php 作成済みの共有フォルダ一覧画面 download.php ファイルのダウンロード処理 edit.php ファイル/フォルダの名称・コメント・属性編集 files.php 共有フォルダ内のファイル/フォルダの一覧画面 files_com.php 共通サブルーチン・ファイル group.php ユーザーとグループ設定処理 icon_img.php ファイルのアイコンイメージ定義ファイル アイコンを追加する場合はこのファイルを編集 index.php 共有フォルダへの入り口用のページ (login.phpにジャンプする) locale.php 言語及び文字コード別の文字列の設定ファイル (使用される設定ファイル(デフォルトはUTF8)) login.php ログイン処理 md5hash.js クライアント用のMD5ハッシュ関数JavaScript mkdir.php 共有フォルダ内のフォルダ作成処理 modconf.php 作成済みの共有フォルダの設定更新処理 newconf.php 共有フォルダの新規作成処理 passwd.php パスワード作成・変更処理 paste.php ファイル/フォルダのペースト処理 session.php セッション確立と継続のためのサブルーチン setconf.php 構成ファイルの配置設定処理 setlang.php 表示言語の設定処理 upload.php ファイルのアップロード処理 filesXXX/config/ 共有フォルダ設定の格納用ディレクトリ (設定で変更できます) 共有フォルダのエントリーページ(index.php)もここに作成される files.conf 管理用の設定ファイル passwd 管理用のパスワードファイル filesXXX/data/ 共有フォルダ・データ格納用ディレクトリ (設定で変更できます) filesXXX/images/ イメージファイル格納ディレクトリ back.png 背景イメージ bmp.png ビットマップファイルのアイコン copy.png コピー・アイコン cut.png 切り取り・アイコン delete.png 削除・アイコン edit.png 編集・アイコン excel.png エクセルデータファイルのアイコン folder.png フォルダ・アイコン gif.png GIFイメージファイルのアイコン html.png HTMLファイルのアイコン iso.png isoイメージファイルのアイコン lzh.png 圧縮ファイルのアイコン mail.png OutlookExpressデータ(.eml)ファイルのアイコン movie.png 動画ファイルのアイコン paste.png 貼り付け・アイコン pdf.png PDFファイルのアイコン sound.png MIDIファイルのアイコン text.png テキストファイルのアイコン title.png タイトル・イメージ(GUSUKU) unknown.png 形式の不明なファイルのアイコン up.png 上位フォルダ・アイコン wav.png サウンドファイルのアイコン word.png ワード文書ファイルのアイコン wordpad.png ワードパッド文書ファイルのアイコン filesXXX/locale/ 文字コード別のファイルを格納したディレクトリ euc-jp/ 文字コードがEUCのファイルを格納したディレクトリ システムで使用する文字コードがEUCの場合は、この 中のファイルを filesXXX 直下に上書きコピーする。 locale.php 言語及び文字コード別の文字列の設定ファイル(EUC版) (filesXXX/locale.php に上書きコピーする) files.conf 管理用の設定ファイル(EUC版) (filesXXX/files.conf に上書きコピーする) manual/ マニュアル格納ディレクトリ(EUC版) (filesXXX/manual に上書きコピーする) folder_manual.html 共有フォルダ・操作説明 index.html ヘルプ・メニュー kanri_manual.html 管理画面・操作説明 readme.html 概要とセットアップ image/ マニュアル用のイメージファイルディレクトリ */png マニュアル用のイメージファイル utf-8/ 文字コードがUTF8のファイルを格納したディレクトリ システムで使用する文字コードがUTF8の場合は、この 中のファイルを filesXXX 直下に上書きコピーする。 locale.php 言語及び文字コード別の文字列の設定ファイル(UTF8版) (filesXXX/locale.php に上書きコピーする) files.conf 管理用の設定ファイル(UTF8版) (filesXXX/files.conf に上書きコピーする) manual/ マニュアル格納ディレクトリ(UTF8版) (filesXXX/manual に上書きコピーする) folder_manual.html 共有フォルダ・操作説明 index.html ヘルプ・メニュー kanri_manual.html 管理画面・操作説明 readme.html 概要とセットアップ image/ マニュアル用のイメージファイルディレクトリ */png マニュアル用のイメージファイル shift-jis/ 文字コードがShift_JISのファイルを格納したディレクトリ システムで使用する文字コードがShift_JISの場合は、この 中のファイルを filesXXX 直下に上書きコピーする。 locale.php 言語及び文字コード別の文字列の設定ファイル(Shift_JIS版) (filesXXX/locale.php に上書きコピーする) files.conf 管理用の設定ファイル(Shift_JIS版) (filesXXX/files.conf に上書きコピーする) manual/ マニュアル格納ディレクトリ(Shift_JIS版) (filesXXX/manual に上書きコピーする) folder_manual.html 共有フォルダ・操作説明 index.html ヘルプ・メニュー kanri_manual.html 管理画面・操作説明 readme.html 概要とセットアップ image/ マニュアル用のイメージファイルディレクトリ */png マニュアル用のイメージファイル us-ascii/ 文字コードがUS-ASCIIのファイルを格納したディレクトリ システムで使用する文字コードがUS-ASCIIの場合は、この 中のファイルを filesXXX 直下に上書きコピーする。 locale.php 言語及び文字コード別の文字列の設定ファイル(英語版) (filesXXX/locale.php に上書きコピーする) files.conf 管理用の設定ファイル(英語版) (filesXXX/files.conf に上書きコピーする) manual/ マニュアル格納ディレクトリ(英語版) (filesXXX/manual に上書きコピーする) folder_manual.html 共有フォルダ・操作説明 index.html ヘルプ・メニュー kanri_manual.html 管理画面・操作説明 readme.html 概要とセットアップ image/ マニュアル用のイメージファイルディレクトリ */png マニュアル用のイメージファイル filesXXX/manual/ マニュアル格納ディレクトリ(デフォルトはUTF8版) folder_manual.html 共有フォルダ・操作説明 index.html ヘルプ・メニュー kanri_manual.html 管理画面・操作説明 readme.html 概要とセットアップ image/ マニュアル用のイメージファイルディレクトリ */png マニュアル用のイメージファイル 初期設定: 展開したフォルダ内の files.conf が基本設定ファイルになっています。 設定ファイルは、キーワード設定値 のような構成で、1行で1つの項目を 設定するようになっています 特に変更が必要な箇所は、以下の2つです CONFIG_TOP_DIR ./config TOPDIR ./data CONFIG_TOP_DIR はパスワード・ファイルやフォルダの設定ファイルが格納される ディレクトリの指定なので、ブラウザでは直接参照できない場所に変更しておく ことをお勧めします。 ただし、WEBサーバーの実行ユーザーが読み書きできる場所でなければなりません。 TOPDIR も同様に、WEBサーバーの実行ユーザーが読み書きできる場所で、かつ ブラウザでは参照できない場所に設定したほうが良いでしょう。 その他は初期設定のままでも使用できますが、TOP_DIR と CONFIG_TOP_DIR は、 利用するサーバーの環境に合わせて、変更することをお勧めします。 この項目値は、ファイル一覧画面に表示されるリンクURLに使用されるので、 相対表記ではなく絶対表記にしておくと、リンクURLも正しく表記されます。 また、デフォルトの文字コードが us-ascii になっているので、使用する環境に あわせて、後述する言語設定で変更してください。 Ver.2.1 からは、設定ファイルとパスワードを格納するディレクトリを、 管理画面で設定できるようになりました。 共有フォルダの入り口になるページ(index.php)を格納するディレクトリも 同じページで変更できるようになっています。 また、Ver.2.5から後述の管理画面で表示言語の選択が出来るようになりました。 使い方: 展開した時の設定では、展開して出来たディレクトリ中のconfigディレクトリ に作成する共有フォルダの設定ディレクトリが作られるようになっています。 また、実際のデータを入れる共有フォルダも展開したディレクトリ直下のdata ディレクトリ以下に先頭フォルダが作成されます。 1)基本設定の変更 まず、http://サーバーアドレス/展開したURI/index.php にクライアントから ブラウザで接続します。 ログイン画面が表示されるので、ユーザーID: admin、パスワード:nimda で ログインします。 (デフォルトの管理者は admin パスワードは nimda に設定されています) ログインすると管理画面になるので、まず最初に表示言語の設定を行います。 次に構成ファイルの配置変更を行います。 デフォルトの設定では、ファイル名のURLを直接指定すればパスワードファイルや 設定ファイルがブラウザで閲覧できてしまいます。 パスワードファイル中のパスワード部分はハッシュ関数を通してあるので、直接 パスワードが見れるわけではありませんが、危険なことに変わりはありません。 そのため、パスワードファイルと設定ファイルをブラウザで閲覧できない場所 に移す必要があります。 設定ファイルの場所を変更は、管理メニューの「構成ファイル配置設定」メニュー から行います。 構成ファイル配置設定画面で設定を実行すると、実際にファイルの移動が行われる ので、注意して設定を行ってください。 構成ファイル配置設定ができたら、次に「パスワード設定」を行います。 admin が特権ユーザーになっていますので、必ずパスワードを変更しておいて ください。 2)共有フォルダの作成: 共有フォルダ一覧では、作成済みの共有フォルダの一覧が表示され、設定の 修正や、削除、共有フォルダの毎のログイン画面へのジャンプが行えます。 共有フォルダ作成では、新規に共有フォルダを作成します。 共有フォルダの設定名が設定ファイルの格納ディレクトリ名になります。 先頭フォルダには、実際に共有するフォルダの先頭ディレクトリを指定します。 フルパスか、スクリプトのディレクトリからの相対パスで指定します。 バージョン2.4から、URLで直接参照できないディレクトリでも指定できる ようになったので、セキュリティを考慮するとWEBサーバーの管理下に無い ディレクトリを先頭フォルダに指定した方が良いかも知れません。 また、バージョン2.5から、ダウンロード・スクリプトを使用せずに、直接 ファイルへのリンクを使用できるようになりました。 これは、サイズの大きいファイルを公開したい場合などで、サイズが2GByte 以上の場合にダウンロードできないことに対する回避用に設けました。 その場合、先頭フォルダはWEBサーバーがアクセス可能、書込み可能な場所に 設定しなければなりません。 WEBサーバーの管理下にあるフォルダを指定する際は、データ用のディレクトリに 以下のような内容の .htaccess ファイルを置いて、指定URL上のページ上のリンク からのアクセスだけを受け付ける等の対策をした方が良いでしょう。 SetEnvIf REFERER "^http://www\.example\.com" ref_ok Order deny,allow deny from all allow from env=ref_ok (上記はApacheの場合です。) その他は適当に設定してください。 共有フォルダを作成すると、設定ファイル(files.conf)の CONFIG_TOP_DIR で 指定したディレクトリの下に設定名と同じ名前のディレクトリが作成され、 その中に設定ファイルとパスワード・ファイルが書き出されます。 設定ファイル名は、設定名.conf という形式のファイル名になります。 設定画面で編集できる内容は、設定ファイルのごく一部の項目だけです。 設定ファイルはエディタで編集可能なので、他の詳細項目はエディタで編集 します。 取り敢えずは上記の設定だけで使用できると思います。 共有フォルダを作成したら、共有フォルダ一覧画面を開きます。 共有フォルダ一覧画面の設定名かURLが、共有フォルダのログイン画面への リンクになっています。 3)共有フォルダの操作: 一覧画面から、作成したフォルダの名称、またはURLを選択します。 作成した共有フォルダへのログイン画面にジャンプするので、ここでも ユーザーID:admin 、パスワード:nimda でログインします。 (adminのパスワードはログイン後に変更してください) 共有フォルダの操作の基本になる、ファイル一覧の画面が表示されます。 この画面の上部に、「フォルダ作成」「アップロード」「パスワード設定」 の各機能へのリンクが表示されています。 「フォルダ作成」でサブフォルダを作成し、「アップロード」でクライアント からファイルをアップロードします。 作成したフォルダへの移動は、フォルダ名か行先頭のアイコンを選択します。 下位フォルダから上位フォルダへの移動は先頭行の上位フォルダの名前か矢印 アイコンを選択します。 アップロードしたファイルの名前が、一覧上にリンクとして表示されます。 ダウンロードする場合は、このリンクを選択してクライアントにダウンロード します。 コメントの編集や削除、複写、切取はファイル名の横のアイコンを選択します。 4)設定ファイルの編集: 設定ファイルの日本語文字コードはシステムで使用する文字コードで記述し、 改行はLFのみを使用します。 設定項目は1行に1項目を記述し、 キーワード 設定値1 [設定値2] [設定値3] という形式になっています。 キーワードは行頭から開始し、値との区切りは必ず1つのTabで区切ります。 区切りに複数のTabを入れてはいけません。 キーワードの種類によって、設定値2、設定値3が無いものもあります。 行頭が # の行はコメント行です。 設定ファイルの項目については、設定ファイルの先頭にコメントで表記されて いますので、そちらを参照してください。 利用規定: ・使用条件 このソフトは誰でも無償で使用することが出来ます。 ただし、利用者の国の法律に反するような用途や、倫理に反する用途での 使用は禁じます。 ・配布について 編集・改造を行っていない状態での再配布は自由です。 ・編集・改造について 変更・改造は自由に行えますが、変更を加えたものを再配布する場合は、 変更内容を明記したドキュメントを配布物に含める必要があります。 ただし、著作権情報に関する部分の編集は不許可とします。 このソフトウェアのソースコードの全て、もしくは一部を他のソフトウェアに 無断で使用することはできません。 ・免責事項 このソフトウェアを使用したことで利用者が何らかの不利益を被ったとした としても、それに関して当社はいっさい責任を負いません。 自己責任でご使用ください。 ・バグ・要望について バグや要望については、メールでお願いします。 ただし、バグ修正、要望の反映が保証される物ではありません。 著作権情報: このソフトウェアの著作権は、GUSUKUが保有します。 このソフトウェアは日本国著作権法および国際条約により保護されています。 利用規定の範囲内で使用することを許諾しますが、利用規定に違反して使用、 配布などを行うと、著作権の侵害となりますのでご注意ください。 連絡先: ソフトウェア開発 GUSUKU webmaster@gusuku.org 更新履歴: Ver.1.0.0 2004/04/27 初版 Ver.1.0.1 2004/05/12 Tableのサイズ指定を固定サイズ(ピクセル)指定から相対サイズ (パーセント)指定に変更 ヘルプを追加 Ver.1.0.2 2004/05/18 files_com.php の get_post_get_val() を修正してバックスラッシュに よるエスケープに対処 Ver.1.0.3 2004/05/23 MacOS上のブラウザでMD5ハッシュ化の JavaScript が正しく動作しない為 設定ファイルにMD5の使用条件、MD5_PASSWD_USE を追加し、値として YES、NO、NO_MAC の3種類を設定できるように修正。 Ver.1.0.4 2005/08/02 ファイルのアイコン定義ファイルを別ファイルに切り出して、編集方法を コメントで付加。(アイコン追加の要望があったため) ヘルプにダウンロード方法の記述が無かったので、追加しました。 ファイル・アップロード時に上書きの確認をするように修正。 管理者のデフォルト・パスワードをブランクでなく設定ファイルで指定 されたものにするように修正。 デフォルトでは、以下の設定になっています。 管理者ユーザーID: admin 管理者パスワード: nimda Ver.2.0 2007/09/05 ・表示する文字列の変更を locale.php のみの修正で行えるように、 表示文字列を locale.php に配列として分離した。 表示する文字列取得は get_txt() を使用して行うように修正。 ・ユーザーとグループでのパーミッション設定機能を追加した。 ・ファイルのダウンロード方法をリンクではなくダウンロードスクリプトを 使用するように変更した。(これにより、データフォルダがWEBサーバーの 管理下でなくてもダウンロード可能となった。) ・設定ファイルで、スクリプトが作成するファイルのパーミッションを、 全てのユーザーが読み書き可能に出来るようにした(PERMIT_ALL=YES)。 ・文字コード別に設定ファイルを用意した。 filesXXX/locale の下に文字コードに依存するファイル用のディレクトリを 用意して、euc-jp、utf-8、shift-jis、us-ascii の4種類の文字コード用の 設定ファイルを用意した。 Ver.2.1 2007/12/02 ・ログイン画面へのリンクを記述したindex.phpファイルを設定ファイルを、 パスワードファイルとは別の場所に作成できるようにした。 ・ダウンロード・スクリプト download.php の余分な記述を削除した。 ・管理メニューに構成ファイル配置設定を追加した Ver.2.2 2007/12/07 Ver.2.1 でリリースしたスクリプトの中の、文字コードが UTF-8 のファイルに BOMが混入してるものがあったので、差し替えた。 Ver.2.3 2008/02/09 ・PHP 4.3.3 以前のバージョンで、session_start() でエラーになる場合が あったので、session_start() の前に ini_set()を実行するように修正した ・PHP4でサポートされていない関数 stripos() を使用していたので、代わりに stristr() を使うように変更した。 ・構成ファイル配置設定で、設定ファイル用フォルダのパスが同じままで設定 された場合、元の設定ファイルを消してしまう不具合を修正した。 Ver.2.4 2008/03/25 ・ログイン画面への接続用のURLを表示するようにした ・ダウンロード・ファイルのリンク方法を変更した。 ・日本語名のファイルをダウンロードする際に、ブラウザの種類を考慮して ファイル名を変換するようにした。 ・カットバッファのファイルへのリンク先が間違っていたので修正した Ver.2.5 2008/12/11 ・HTMLの前に、HTTPヘッダで使用する文字セットを指定するようにした。 ・一部の関数を files_com.php から session.php に移動した。 ・戻り先URLが正しくセットされなかったので修正した。 ・ファイルサイズを符号なし32ビット整数で設定するように修正した ・表示言語の設定画面を追加した ・ダウンロードスクリプトの使用以外に、ファイルへの直接リンクを使用できる ようにした ・カレントディレクトリを保存する変数にセットする値がおかしくて、 ファイルのパスが正しくセットできない場合があったので修正した。 (掲示板でご指摘をいただいたお陰でBUGを発見できました。 ありがとうざいました。) Ver.2.6 2009/03/25 ・アップロードのエラー発生時にメッセージと戻り先を表示できるようにした。 ・設定ファイル名が渡されていないとき、セッション変数から取得するようにした ・セットされていない変数への参照で警告が出ていたので、先にチェックする ようにした・ ・アップロードしたファイルのファイル名等を受け取るグローバル変数の チェック順を変更した。 $_FILES >> $HTTP_POST_FILES >> $UploadFile ・ファイルやディレクトリの存在チェックをせずに、オープンや削除をしている ところがあったので、先にチェックするようにした。 ・変数の間違いを修正(new_conf -> conf) ・ファイルを削除する前に存在チェックをするように修正した。 (ログに警告が出力されないようにするため) Ver.2.6.1 2009/11/08 ・Internet Explorerで、アプリケーションでファイルを開かずに、保存ダイアログが 出るようにした。 Ver.2.6.2 2014/05/23 ・著作権者を変更 ・メッセージ用の文字列リソースが無かったので追加した。 ・共有フォルダから戻った後に、共有フォルダの設定ファイルを参照しない ように修正した。