サーバにファイルマネージャを導入しサイトをリモートから更新可能にする
File Thingie – PHP File Manager
サーバのコンテンツをリモートから更新するために、PHPベースのファイルマネージャを導入してみる。
FTPではなくWebベースのファイルマネージャを探してみたところ、File Thingieというシンプルなやつを見つけることができた。
このFile Thingieを利用して、Webサーバのルートディレクトリをリモートから更新可能な状態にしてみた。
https://github.com/leefish/filethingie
上のURLからダウンロードすることができる。
インストール
ダウンロードしたtar.gzを展開しWebで見れる状態に設定し以下のURLにアクセスする。
filethingie.local/ft2.php
ログイン画面が表示された。
File Thingieのルートディレクトリに、
config.sample.php
というファイルが配置されているので、
config.php
にリネームした上で、
define("USERNAME", "admin"); define("PASSWORD", "pass");
ユーザー名・パスワードのログインの設定を行うことができる。IDとpassを設定したらログインしてFile Thingieのルート配下にディレクトリやファイルを作成することが可能になる。
使い方
ログインした後のトップページが画像の状態
[Create folder]で新規にフォルダやファイルを作成することができる。下の画像は、newフォルダとnew.txtを手動で作成した状態。
矢印の部分をクリックすると、ファイルの編集や削除・リネームが可能。
ルートディレクトリの変更
標準では、File Thingieのルートディレクトリにフォルダやファイルが作成される。ルートディレクトリを変更するにはconfig.phpの
$ft["settings"]["DIR"] = ".";
を変更する。例えば、直下にrootというフォルダを作成しそこをファイルマネージャのルートにしたい場合は、
$ft["settings"]["DIR"] = "root";
と設定する。
WebサーバのルートディレクトリをFile Thingieのルートとしてマッピングすることも可能で、今回やりたかったことになる。まず、File Thingieのルート直下にシンボリックリンクを作成する。
C:\xampp\htdocs\vhost\haugstrup-filethingie>mklink /d root_directory C:\xampp\htdocs\vhost root_directory <<===>> C:\xampp\htdocs\vhost のシンボリック リンクが作成されました
root_directoryというWebサーバのルートにリンクしたシムリンクを作成したので、
$ft["settings"]["DIR"] = "root_directory";
とする。すると利用している開発マシンのWebルートではあるが画像のようにフォルダがリストされる。
Webサーバのルートにsymlinkでリンクし一通り操作してみたが、ファイルやフォルダの操作については問題なさそうであった。しかし、ファイルマネージャのルートから検索を行った際にうまく検索できなかった。ルートから一階層下のフォルダでは検索がうまく機能していた。
そのため、シンボリックリンクで別の階層をマッピングする場合は注意しておきたい。
config.phpでは、フォルダやファイル単位でブラックリストやホワイトリストの設定が可能で、拡張子単位での制御や、操作コマンドの有効無効など細かく制御することが可能なので、興味がある人はいろいろと調整してみることをおすすめする。
ファイルマネージャのトレンド
クラウドの台頭でファイルマネージャへの需要があまりないのかもしれないということが気になったので、Googleトレンドで調べてみた。
一定の需要があるようだ。
まとめ
当初Ajaxベースのファイルマネージャを探していたのだが、File Thingieのシンプルさは他のファイルマネージャよりも汎用性が高くサーバへのWebベースでのアップロード要件があるなら調査してみる価値がある。Ajaxベースのもので代表的なファイルマネージャは、
などが存在する。