CI_Ftp
「CI_Ftp」ライブラリクラスは、FTPクライアント機能を提供します。
CI_Ftpの設定
「CI_Ftp」の設定項目は以下のものがあります。
最低限必要な設定は、接続先FTPサーバ名「hostname」、ログインユーザ名「username」と
ログインパスワード「password」です。残りはデフォルトでよければ設定する必要はありません。
設定項目 | デフォルト | 説明 |
---|---|---|
hostname | 接続するFTPサーバのホスト名、または、IPアドレスを指定します。 | |
username | ログインユーザ名を指定します。 | |
password | ログインパスワードを指定します。 | |
port | 21 | 接続するFTPサーバのTCPポート番号を指定します。 |
passive | TRUE | PASSIVEモードでの接続をする場合はTRUEを、 アクティブモードで接続する場合はFALSEを指定します。 |
debug | FALSE | CI_Ftpのデバッグ機能を有効にする場合はTRUEを指定します。 |
$config['username'] = 'login_account';
$config['password'] = 'login_password123';
$config['port'] = 21;
$config['passive'] = TRUE;
$config['debug'] = FALSE;
CI_Ftpのロード
「CI_Loader」クラスの「library()」メソッドでロードします。
「application/config/ftp.php」設定ファイルでCI_Ftpの設定を行わない場合は、
第二引数に設定情報を連想配列で指定するか、「initialize()」メソッドで指定します。
また、設定情報はFTP接続を行う際に指定することもできます。
'hostname' => 'your.ftp.srv',
'username' => 'login_account',
'password' => 'login_password123',
);
$this->load->library('ftp', $config);
$config = array(
'hostname' => 'your.ftp.srv',
'username' => 'login_account',
'password' => 'login_password123',
);
$this->ftp->initialize($config);
FTP 接続・切断
connect($config = array())
FTPサーバに接続するには、「connect()」メソッドを実行します。
接続するとログイン処理もこの中で行われます。
FTPサーバに接続が成功し、且つ、ログインに成功するとTRUEを返し、
接続とログインのいずれかに失敗するとFASLEを返します。
if ( $this->ftp->connect() ) {
// 接続成功
}
else {
// 接続失敗
}
引数に設定情報を指定することもできます。指定しない場合は、設定ファイル、または、 ロード時に指定した設定で接続処理を行います。
$config = array(
'hostname' => 'your.ftp.srv',
'username' => 'login_account',
'password' => 'login_password123',
);
if ( $this->ftp->connect($config) ) {
// 接続成功
}
else {
// 接続失敗
}
close()
FTPの処理が済んだら切断します。
FTPの切断は単純に「close()」メソッドを実行するだけです。
接続には成功してログインに失敗しただけの可能性があるため、
「connect()」メソッドでFALSEが返っても「close()」メソッドを実行すべきです。
// 接続成功
}
else {
// 接続失敗
}
$this->ftp->close();
FTPコマンド処理
FTPの接続が済んだら、FTPコマンドを発行してリモートサーバ上のファイルシステムに対し操作を行うことができます。
changedir($path = '', $supress_debug = FALSE)
カレントディレクトリを移動します。
第二引数にTRUEを指定すると、デバッグモードでもエラー処理を行いません。
mkdir($path = '', $permissions = NULL)
新しくディレクトリを作成します。作成するディレクトリの権限(パーミッション)を指定することもできます。
権限(パーミッション)は、8進数で指定します。
upload($locpath, $rempath, $mode = 'auto', $permissions = NULL)
ローカルファイルをリモートファイルシステムにアップロードします。
第一引数にローカルファイルシステム上のファイルパス、第二引数にリモートファイルシステムのファイルパスを指定します。
ローカルのファイルパスは絶対パスかドキュメントルートからの相対パスです。
第三引数には、ファイル転送モードを「ascii」、「binary」または、自動判別の「auto」 のいずれかを指定することができます。デフォルトは「auto」です。
第四引数には、送信後のリモートファイルシステム上のファイルの権限(パーミッション)を8進数で指定することができます。 指定しなかった場合はFTPサーバの設定に依存します。
download($rempath, $locpath, $mode = 'auto')
リモートファイルシステムからファイルをローカルにダウンロードします。
第一引数にリモートファイルシステム上のファイルパス、
第二引数にローカルファイルシステムのファイルパスを指定します。
ローカルのファイルパスは絶対パスかドキュメントルートからの相対パスです。
第三引数には、ファイル転送モードを「ascii」、「binary」または、自動判別の「auto」 のいずれかを指定することができます。デフォルトは「auto」です。
rename($old_file, $new_file, $move = FALSE)
リモートファイルシステムのファイルをリネーム、または、ファイルの移動を行います。
第一引数に対象ファイル名、第二引数にリネーム後のファイル名を指定します。
第三引数はFTPコマンドには何も影響しません。CI_Ftpのデバッグ処理でエラーメッセージを変える単なるフラグです。
move($old_file, $new_file)
「rename()」メソッドを第三引数にTRUEを指定して実行します。
従って、CI_Ftpのデバッグ処理への影響以外の処理内容は「rename()」メソッドとまったく同様です。
delete_file($filepath)
リモートファイルシステムのファイルを削除します。
delete_dir($filepath)
リモートファイルシステムのディレクトリを削除します。
対象のディレクトリ内のファイルは再帰的に全て削除されます。
chmod($path, $perm)
リモートファイルシステムのファイルの権限(パーミッション)を変更します。
第一引数に対象のファイル名、第二引数にパーミッションを8進数で指定します。
list_files($path = '.')
指定したディレクトリのファイルの一覧を配列で返します。
print_r($files);
/*
Array(
[0] => new_file
[1] => my_dir
[2] => tmp
)
*/
mirror($locpath, $rempath)
ローカルの指定したディレクトリを再帰的に全てリモートファイルシステムにミラーリングアップロードします。 ローカルファイルの権限(パーミッション)は、そのまま維持されます。
第一引数にローカルのディレクトリパス、第二引数にリモートのディレクトリパスを指定します。
CI_Ftpのデバッグモード
設定項目「debug」をTRUEに設定すると、 CI_Ftpをデバッグモードで処理させることができます。 デバッグモードでは、各メソッド内でエラーが発生した際に、 CodeIgniterの共通関数「show_error()」でエラーメッセージを出力します。
エラーメッセージは、デフォルトで「system/language/english/ftp_lang.php」 言語ファイルに定義されています。