FTP クラス¶
CodeIgniter の FTP クラスを使うと、リモートサーバにファイルを転送できます。 リモートにあるファイルは、移動、リネーム、そして削除も可能です。 また、FTP クラスには、FTP経由でローカルディレクトリをすべてリモートに 再作成する “ミラーリング”機能もあります。
注釈
SFTP と SSL FTP プロトコルはサポートされていません。 通常の FTPのみサポートされます。
FTPクラスの機能¶
クラスの初期化¶
CodeIgniter の大部分のクラスと同様、FTP クラスは、コントローラの中で $this->load->library メソッドを使って初期化します:
$this->load->library('ftp');
一度読み込まれると、FTP オブジェクトは、次のようにして利用できます: $this->ftp
使用例¶
以下の例では、FTPサーバに対してコネクションが開かれ、 ローカルファイルが ASCII モードで読み取られてアップロードされます。 ファイルのパーミッションは755に設定します。
$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);
$this->ftp->close();
以下の例では、サーバからファイルのリストが取得されます。
$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$list = $this->ftp->list_files('/public_html/');
print_r($list);
$this->ftp->close();
以下の例では、ローカルディレクトリがサーバにミラーされます。
$this->load->library('ftp');
$config['hostname'] = 'ftp.example.com';
$config['username'] = 'your-username';
$config['password'] = 'your-password';
$config['debug'] = TRUE;
$this->ftp->connect($config);
$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
$this->ftp->close();
クラスリファレンス¶
- class CI_FTP¶
- connect([$config = array()])¶
パラメータ: - $config (array) – 接続情報
返り値: 成功時は TRUE 、 失敗時は FALSE
返り値の型: bool
FTP サーバに接続してログインします。 接続の設定は、配列で渡すか設定ファイルに 保管しておくことができます。
以下は、手動で設定をセットする方法を示した例です:
$this->load->library('ftp'); $config['hostname'] = 'ftp.example.com'; $config['username'] = 'your-username'; $config['password'] = 'your-password'; $config['port'] = 21; $config['passive'] = FALSE; $config['debug'] = TRUE; $this->ftp->connect($config);
設定ファイルでの FTP の設定
必要であれば、FTP の設定を設定ファイルに保管することもできます。 単純に、 ftp.php という名前で新しいファイルを作成し、そのファイルに $config という名前の設定用配列を追加します。 application/config/ftp.php ファイルに 保存すると、自動的にそれが使われます。
利用できる接続オプション
選択肢 初期値 説明 hostname n/a FTP ホスト名(通常は次のようになります: ftp.example.com) username n/a FTP ユーザ名 password n/a FTP パスワード port 21 FTP ポート番号 debug FALSE TRUE/FALSE (ブール値): デバッグ用にエラーメッセージを表示するかどうか passive TRUE TRUE/FALSE (ブール値): PASSIVE モードを使用するかどうか
- upload($locpath, $rempath[, $mode = 'auto'[, $permissions = NULL]])¶
パラメータ: - $locpath (string) – ローカルのファイルパス
- $rempath (string) – リモートのファイルパス
- $mode (string) – FTP モード、 デフォルトは ‘auto’ (’auto’ 、 ‘binary’ 、 ‘ascii’ を指定する)
- $permissions (int) – File パーミッション(8進数)
返り値: 成功時は TRUE 、 失敗時は FALSE
返り値の型: bool
サーバにファイルをアップロードします。ローカルのパスとリモートのパス、オプションで、 転送モードとパーミッションを設定します。 例:
$this->ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);
‘auto’ モードが使用されているときは、転送するファイルの拡張子によって転送モードが決められます。
パーミッションを設定する場合は8進数の値を渡さなければなりません。
- download($rempath, $locpath[, $mode = 'auto'])¶
パラメータ: - $rempath (string) – リモートのファイルパス
- $locpath (string) – ローカルのファイルパス
- $mode (string) – FTP モード、 デフォルトは ‘auto’ (’auto’ 、 ‘binary’ 、 ‘ascii’ を指定する)
返り値: 成功時は TRUE 、 失敗時は FALSE
返り値の型: bool
サーバからファイルをダウンロードします。リモートとローカルのパスを指定 する必要があります。オプションでモードを指定できます。 例:
$this->ftp->download('/public_html/myfile.html', '/local/path/to/myfile.html', 'ascii');
‘auto’ モードが使用されているときは、転送するファイルの拡張子によって転送モードが決められます。
ダウンロードに成功しなかった場合は FALSE を返します。 (ローカルファイルに対するパーミッションがなかった場合も含む)
- rename($old_file, $new_file[, $move = FALSE])¶
パラメータ: - $old_file (string) – 変更するファイルの名前
- $new_file (string) – 新しいファイルの名前
- $move (bool) – move を行うかどうか
返り値: 成功時は TRUE 、 失敗時は FALSE
返り値の型: bool
ファイルをリネームします。変更するファイルの名前/パスと、新しいファイルの名前/パスを指定します。
// green.html を blue.html にリネームします。 $this->ftp->rename('/public_html/foo/green.html', '/public_html/foo/blue.html');
- move($old_file, $new_file)¶
パラメータ: - $old_file (string) – 変更するファイルの名前
- $new_file (string) – 新しいファイルの名前
返り値: 成功時は TRUE 、 失敗時は FALSE
返り値の型: bool
ファイルを移動できます。移動元と移動先のパスを指定します:
// blog.html を "joe" から "fred" に移動します。 $this->ftp->move('/public_html/joe/blog.html', '/public_html/fred/blog.html');
注釈
移動先のファイル名が元と違う場合はリネームされます。
- delete_file($filepath)¶
パラメータ: - $filepath (string) – 削除するファイルのパス
返り値: 成功時は TRUE 、 失敗時は FALSE
返り値の型: bool
ファイルを削除できます。削除するファイルのパスとファイル名を指定します。
$this->ftp->delete_file('/public_html/joe/blog.html');
- delete_dir($filepath)¶
パラメータ: - $filepath (string) – 削除するディレクトリのパス
返り値: 成功時は TRUE 、 失敗時は FALSE
返り値の型: bool
ディレクトリとそのディレクトリに含まれるものをすべて削除します。 削除するディレクトリへのパスを末尾にスラッシュをつけて指定します。
重要
このメソッドを使うときは、「厳重に」注意してください!! 渡されたパス以下のサブフォルダと全ファイルの すべてのもの を再帰的に削除します。 パスが完全に正しいかを確認するようにしてください。 list_files() メソッドをまず使って、パスが正しいかを検証するようにしてください。
$this->ftp->delete_dir('/public_html/path/to/folder/');
- list_files([$path = '.'])¶
パラメータ: - $path (string) – ディレクトリのパス
返り値: ファイルの配列、失敗時は FALSE
返り値の型: array
サーバにあるファイルのリストを取得して 配列 として返します。 取得したいディレクトリへのパスを指定する必要があります。
$list = $this->ftp->list_files('/public_html/'); print_r($list);
- mirror($locpath, $rempath)¶
パラメータ: - $locpath (string) – ローカルのパス
- $rempath (string) – リモートのパス
返り値: 成功時は TRUE 、 失敗時は FALSE
返り値の型: bool
ローカルフォルダ内のすべて(サブフォルダ含む)を再帰的に読み取って、 FTP 経由で読み取ったもののミラーを作成します。 元のファイルパスのディレクトリ構造がサーバに再作成されます。 作成元のパスと作成先のパスを指定する必要があります:
$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
- mkdir($path[, $permissions = NULL])¶
パラメータ: - $path (string) – 作成するディレクトリのパス
- $permissions (int) – パーミッション(8進数)
返り値: 成功時は TRUE 、 失敗時は FALSE
返り値の型: bool
サーバにディレクトリを作成できます。作成したいフォルダ名を末尾にスラッ シュをつけて指定します。
パーミッションは、 8進数の値で第2引数に指定できます。
// "bar"という名前のフォルダを作成します。 $this->ftp->mkdir('/public_html/foo/bar/', 0755);
- chmod($path, $perm)¶
パラメータ: - $path (string) – パーミッションを変更するファイルまたはディレクトリのパス
- $perm (int) – パーミッション(8進数)
返り値: 成功時は TRUE 、 失敗時は FALSE
返り値の型: bool
ファイルのパーミッションをセットできます。パーミッションを設定したいファイルまたは ディレクトリのパスを指定します:
// "bar" に755のパーミッションを設定します。 $this->ftp->chmod('/public_html/foo/bar/', 0755);
- changedir($path[, $suppress_debug = FALSE])¶
パラメータ: - $path (string) – ディレクトリのパス
返り値: 成功時は TRUE 、 失敗時は FALSE
返り値の型: bool
作業ディレクトリを指定したパスへ変更します。
- close()¶
返り値: 成功時は TRUE 、 失敗時は FALSE 返り値の型: bool サーバとのコネクションを切断します。アップロードが終わったら、 このメソッドを使うのをおすすめします。