PHP製ファイル管理ツール『File Thingie』

# ![](//goo.gl/tuSQrq) はじめに

みんなでファイルを共有管理したい…てな場面は多いかと思います。開発メンバー内だけであれば、GoogleドライブやOneDrive、Amazon CloudDrive、DropBoxなど選択肢は色々あります。自サーバーがあるなら、FTP/SFTPソフトなんかで接続すれば、まぁなんでもやりたい放題ですね（Windowsでは「WinSCP」、Macでは「FileZilla」あたりをよく使います）。SVNやGitを立てればドキュメントのバージョン管理もできます。

ただ、企画書やデザイン案など、開発外（営業部門とか外部のデザイナーさんとか）の人たちにも幅広く使ってもらいたい場合、アカウントを取得してもらったり、ソフトの使い方を覚えてもらったり、閲覧するだけであってもログインが必要だったり…と、それぞれ一長一短あり、どれもやや面倒です。


# ![](//goo.gl/tuSQrq) File Thingie

前置き長くなりましたが『 **File Thingie** 』。

* シンプルなPHP製（スマホのブラウザーからでもOK）
* ファイルのアップロード/移動/複製/削除が出来る
* ファイル検索もできる
* テキストファイルであればブラウザー上での編集も可能
* 閲覧だけならログイン不要（直リンクURLにアクセス）
* なにより、直感的に使える（これ大事）

画面はこんな感じ。
![thingie_ja.png](https://qiita-image-store.s3.amazonaws.com/0/36751/da58a9c6-277e-2945-7f3e-ac2dfe171ce2.png)

導入は５分もかからない程度なので、あとはThingieを導入したURLとログイン情報を通知すれば共有生活が始まります。アップしたファイルをピンポイントで閲覧してもらうだけならログイン不要です。


# ![](//goo.gl/tuSQrq) 導入

ダウンロードはここから。
https://github.com/leefish/filethingie/archive/master.zip

サーバーにアップして下記コマンドで解凍。
unzip filethingie-master.zip


# ![](//goo.gl/tuSQrq) 設定

config.sample.php があるのでこれを config.php に名前変更して、必要箇所を設定します。

```php:config.php
//▼ログイン時のIDとパスワード
define("USERNAME", "user"); // Your default username.
define("PASSWORD", "pass"); // Your default password.

//▼管理対象ディレクトリ（相対パスで。最後はスラッシュつけない）
$ft["settings"]["DIR"] = "."; // Your default directory. Do NOT include a trailing slash!

//▼アップロードできるファイルサイズ上限（1MB = 1048576バイト）
$ft["settings"]["MAXSIZE"] = 2097152; // Maximum file upload size - in bytes.
```

あと、管理対象ディレクトリ（およびその配下）のパーミッションはひとまず777にしときます。

また、アップロードできるファイルサイズの上限を変更した場合、PHP自体の設定も変更が必要です。確実なのは php.ini を編集後、Apache再起動です。

```
vi /etc/php.ini
---------------
max_execution_time 120　（※単位は秒）
memory_limit 64M
post_max_size 16M
upload_max_filesize 12M
```


# ![](//goo.gl/tuSQrq) ちょっと修正

ft2.php がメインファイルです。ここからログインします。
・・・その前に、バグなのか、ファイルアップロード時にファイル名チェックでエラーとなるので、110行目あたりをとりあえず以下のように修正します。

```php:ft2.php
function ft_validate_filename($file)
{
	return TRUE;
	//// Make sure the file doesn't start with a period, contain unwanted characters, or end in a period.
	//$pattern = '^[^\.]((\.)?(([\w~!]){1,}))+$';
	//$result = preg_match($pattern, $file);
	//return $result;
}
```

# ![](//goo.gl/tuSQrq) ログインしてみる

ft2.php にアクセスし、設定しておいたユーザー名とパスワードでログインすればOKです。ファイルを上階層のフォルダーに移動させたい場合は、移動先を「../aaa」などと指定します。あとは直感的に使えるので説明省略。


# ![](//goo.gl/tuSQrq) 日本語ローカライズ／デザイン変更

日本語表示したい場合は、設定ファイルで日本語を指定します。

```php:config.php
$ft["settings"]["LANG"] = "ja";
```

* 自分で翻訳したい場合は、locales/ja.php
* デザインを変更したい場合は、css/ft.css

をそれぞれ編集します。
ただし、同梱されている ja.php は、なぜだか文字化けしてるので要注意。（仕方がないのでほぼ自力で書き直しました・・・）

バグ修正と日本語表示にカスタマイズしたバージョンを下記に置いてますので、試してみたい方はどうぞ。
　↓↓↓
[FileThingie2.5.7_ja.zip](https://www.amazon.com/clouddrive/share/tITVD5ibfqns110cgEygo2bvXNdBHjpg9MwkIWaONeL)


# ![](//goo.gl/tuSQrq) 参考URL

PHPベースのファイルマネージャでリモート更新を行う
http://dim5.net/windows-server/php-file-manager.html

FAQ｜File Thingie
http://www.solitude.dk/filethingie/faq

Unable to upload : file type not allowed
https://github.com/haugstrup/filethingie/issues/16

『File Thingie』のほかには『[Pydio](http://pyd.io/)』（旧名 AjaXplorer）なども人気のようです。

7つの強力なファイルマネージャー [記事紹介]
http://e0166.blog89.fc2.com/blog-entry-656.html

7 FREE & POWERFUL FILE MANAGERS USING AJAX/PHP/JS
http://devsnippets.com/article/ajax/7-free-powerful-file-managers.html