Files(WEBファイル共有PHPスクリプト)

概要とセットアップ

戻る

ソフトウェア名:
	Files(WEBファイル共有PHPスクリプト)

バージョン:
	Ver.2.6

ファイル名:
	filesVV-YYYYMMDD.tgz

		VV			: バージョンNo.
		YYYYMMDD	: 更新年月日

著作権者名:
	株式会社 テクノワークス
	http://www.technoworks.co.jp

最終更新日:
	2009/03/25

概要:
	このプログラムは、PHP4が使用可能なWEBサーバーで上で、ファイル共有機能を
	提供するPHPスクリプトです。

特徴:
	WEBサーバーに共有フォルダを作成し、クライアントからブラウザを使用して
	ファイルのアップロードやダウンロードが行えます。

	サーバーの共有フォルダの中には、複数階層のサブフォルダを作成することが
	でき、ファイルの削除、ファイルのコメント編集ができます。

	カットバッファを使用して、ファイルの切り取り、コピー、貼り付け等の機能
	を提供します。

	利用者別の複数の共有フォルダを管理することができます。
	各々の共有フォルダは、独立した先頭フォルダを持ち、互いのフォルダ間では
	参照やファイルコピーなどは出来ません。ユーザー登録も別に行います。

	FTPやSSH等が使用できない環境で、ファイルの受け渡しをする際に、メールに
	添付したのではサイズが大き過ぎる、といった場合に使用することを想定して
	います。

	ログイン時の認証には、MD5ハッシュを使用しています。
	PHPのセッションIDと、パスワードのMD5ハッシュを組み合わせ、それをさらに
	MD5ハッシュ関数にかけるといった方法で暗号化しています。

動作環境:
	Linux + Apache + PHP5 の組み合わせでしか検証していません。
	(PHP4が使用できるHTTPサーバーなら、使えるかもしれません)

	ログイン処理やページの切り替え処理にJavaScriptを使用しているため、
	JavaScriptとが動作することがクライアントの条件になります。

	動作検証は以下の環境で行っています。

	サーバー:
		Fedora Core 8 + Apache 2.2.8 + php 5.2.6
		Ubuntu 8.10 + Apache 2.2.9 + php 5.2.6

	クライアント:
		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スクリプトが実行可能なディレクトリに
	アーカイヴを展開します。
	filesXX(XXはバージョン番号)というディレクトリが作成され、その中に
	スクリプトファイルが展開されます。

	ex:
		tar zxvf filesXX.tgz	(XXはバージョン番号)

バージョンアップ:

	バージョンアップする場合は、設定ファイルとパスワードファイル以外の
	既存のスクリプトファイルを上書きします。
	設定ファイルは、追加項目のみを既存の設定ファイルに追加するか、新しい
	設定ファイルに既存の設定ファイルの設定内容の変更を加えて使用してください。
	データ用のフォルダの内容は変更する必要はありません。

	HTMLで使用する文字コードが、デフォルトでは us-ascii になっています。
	運用する環境にあわせて、後述する言語設定で変更してください。
	(その際も既存の設置ファイル files.confの内容を反映するのを忘れないように
	してください。)

ファイル構成:( filesXX の XX はバージョン番号)

	filesXX/		スクリプト格納ディレクトリ
		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	ファイルのアップロード処理

	filesXX/config/		共有フォルダ設定の格納用ディレクトリ
				(設定で変更できます)
				共有フォルダのエントリーページ(index.php)もここに作成される
		files.conf	管理用の設定ファイル
		passwd		管理用のパスワードファイル

	filesXX/data/		共有フォルダ・データ格納用ディレクトリ
				(設定で変更できます)

	filesXX/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	タイトル・イメージ(Technoworks)
		unknown.png	形式の不明なファイルのアイコン
		up.png		上位フォルダ・アイコン
		wav.png		サウンドファイルのアイコン
		word.png	ワード文書ファイルのアイコン
		wordpad.png	ワードパッド文書ファイルのアイコン

	filesXX/locale/		文字コード別のファイルを格納したディレクトリ
		euc-jp/		文字コードがEUCのファイルを格納したディレクトリ
				システムで使用する文字コードがEUCの場合は、この
				中のファイルを filesXX 直下に上書きコピーする。

			locale.php	言語及び文字コード別の文字列の設定ファイル(EUC版)
						(filesXX/locale.php に上書きコピーする)
			files.conf	管理用の設定ファイル(EUC版)
						(filesXX/files.conf に上書きコピーする)
			manual/	マニュアル格納ディレクトリ(EUC版)
					(filesXX/manual に上書きコピーする)
				folder_manual.html	共有フォルダ・操作説明
				index.html		ヘルプ・メニュー
				kanri_manual.html	管理画面・操作説明
				readme.html		概要とセットアップ
				image/			マニュアル用のイメージファイルディレクトリ
					*/png		マニュアル用のイメージファイル

		utf-8/		文字コードがUTF8のファイルを格納したディレクトリ
				システムで使用する文字コードがUTF8の場合は、この
				中のファイルを filesXX 直下に上書きコピーする。

			locale.php	言語及び文字コード別の文字列の設定ファイル(UTF8版)
						(filesXX/locale.php に上書きコピーする)
			files.conf	管理用の設定ファイル(UTF8版)
						(filesXX/files.conf に上書きコピーする)
			manual/	マニュアル格納ディレクトリ(UTF8版)
					(filesXX/manual に上書きコピーする)
				folder_manual.html	共有フォルダ・操作説明
				index.html		ヘルプ・メニュー
				kanri_manual.html	管理画面・操作説明
				readme.html		概要とセットアップ
				image/			マニュアル用のイメージファイルディレクトリ
					*/png		マニュアル用のイメージファイル

		shift-jis/	文字コードがShift_JISのファイルを格納したディレクトリ
				システムで使用する文字コードがShift_JISの場合は、この
				中のファイルを filesXX 直下に上書きコピーする。

			locale.php	言語及び文字コード別の文字列の設定ファイル(Shift_JIS版)
						(filesXX/locale.php に上書きコピーする)
			files.conf	管理用の設定ファイル(Shift_JIS版)
						(filesXX/files.conf に上書きコピーする)
			manual/	マニュアル格納ディレクトリ(Shift_JIS版)
					(filesXX/manual に上書きコピーする)
				folder_manual.html	共有フォルダ・操作説明
				index.html		ヘルプ・メニュー
				kanri_manual.html	管理画面・操作説明
				readme.html		概要とセットアップ
				image/			マニュアル用のイメージファイルディレクトリ
					*/png		マニュアル用のイメージファイル

		us-ascii/	文字コードがUS-ASCIIのファイルを格納したディレクトリ
				システムで使用する文字コードがUS-ASCIIの場合は、この
				中のファイルを filesXX 直下に上書きコピーする。

			locale.php	言語及び文字コード別の文字列の設定ファイル(英語版)
						(filesXX/locale.php に上書きコピーする)
			files.conf	管理用の設定ファイル(英語版)
						(filesXX/files.conf に上書きコピーする)
			manual/	マニュアル格納ディレクトリ(英語版)
					(filesXX/manual に上書きコピーする)
				folder_manual.html	共有フォルダ・操作説明
				index.html		ヘルプ・メニュー
				kanri_manual.html	管理画面・操作説明
				readme.html		概要とセットアップ
				image/			マニュアル用のイメージファイルディレクトリ
					*/png		マニュアル用のイメージファイル

	filesXX/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が無いものもあります。

	行頭が # の行はコメント行です。

	設定ファイルの項目については、設定ファイルの先頭にコメントで表記されて
	いますので、そちらを参照してください。

利用規定:

・使用条件
	個人使用、非営利目的の使用に於いては無償で利用できます。
	このソフトで直接利益を得るのでなければ、企業での利用も可です。

・配布について
	編集・改造を行っていない状態での再配布は自由です。

・編集・改造について
	変更・改造は自由に行えますが、変更を加えたものを再配布する場合は、
	変更内容を明記したドキュメントを配布物に含める必要があります。
	ただし、著作権情報に関する部分の編集は不許可とします。
	このソフトウェアのソースコードの全て、もしくは一部を他のソフトウェアに
	無断で使用することはできません。 

・免責事項
	このソフトウェアを使用したことで利用者が何らかの不利益を被ったとした
	としても、それに関して当社はいっさい責任を負いません。
	自己責任でご使用ください。

	ご意見・ご要望を記入していただけるように、掲示板を設置しました。
		URL: http://www.technoworks.co.jp/forum/forum.php

・バグ・要望について
	バグや要望については、メールでお願いします。
	ただし、バグ修正、要望の反映が保証される物ではありません。

著作権情報:
	このソフトウェアの著作権は(株)テクノワークス が保有します。
	このソフトウェアは日本国著作権法および国際条約により保護されています。
	利用規定の範囲内で使用することを許諾しますが、利用規定に違反して使用、
	配布などを行うと、著作権の侵害となりますのでご注意ください。

連絡先:
	株式会社 テクノワークス
	webmaster@technoworks.co.jp

更新履歴:

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)。
	・文字コード別に設定ファイルを用意した。
	 filesXX/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)

	・ファイルを削除する前に存在チェックをするように修正した。
	 (ログに警告が出力されないようにするため)


Copyright (c) 2004-2009 Technoworks Co., Ltd. All rights reserved.

戻る