Ftp クラス
FTP クラスは、リモートサーバで FTP プロトコルを使用してファイルのアップロード、ダウンロード、移動やミラーを行うことができます。
設定
FTP クラスは、 fuel/core/config/ftp.php にある設定ファイルで設定をします。デフォルトで設定がされています。設定を変更するには、設定ファイルをアプリケーションの設定ディレクトリにコピーし、そのファイルを変更してください。
次の設定を定義することができます。
hostname |
string |
'localhost'
|
接続する FTP サーバの IP またはドメイン名。
|
username |
string |
''
|
オプション: ログインが必要な場合は、接続に用いるユーザ名。
|
password |
string |
''
|
オプション: ログインが必要な場合は、接続に用いるパスワード。
|
timeout |
integer |
90
|
全てのネットワーク操作におけるタイムアウトの秒数。
|
port |
integer |
21
|
FTP サーバが応答するポート番号。ほとんどのサーバは 21 を用いる。
|
passive |
boolean |
true
|
パッシブモードを使用するかどうか。 デフォルトで自動的にパッシブを使用するように設定されています。
|
ssl_mode |
boolean |
false
|
通常の FTP よりも若干安全な FTPS モードを使用する (注意: これは SFTP ではありません) 。
|
debug |
boolean |
false
|
デバックをするために、エラーメッセージを表示するかどうか。
|
forge($config = 'default', $connect = true)
forge メソッドは、異なる Config グループを参照するか設定オプションを配列で渡すことで
FTP クラスの新しいインスタンスを作成することができます。
静的 |
はい |
パラメータ |
パラメータ |
デフォルト |
説明 |
$config |
'default'
|
利用したい config グループの名前または設定の配列。 |
$connect |
true
|
サーバへ自動的に接続します。 |
|
返り値 |
Ftp オブジェクト |
例 |
// デフォルトのサーバへ接続
$ftp = Ftp::forge();
// config/ftp.php で予め定義されているサーバへ接続
$ftp2 = Ftp::forge('image-storage');
// その場でサーバへ接続
$ftp3 = Ftp::forge(array(
'hostname' => 'fuelphp.com',
'username' => '',
'password' => '',
'timeout' => 90,
'port' => 21,
'passive' => true,
'ssl_mode' => false,
'debug' => false
));
if ($ftp3->delete_dir('/') === true)
{
exit('The world owes you a debt of gratitude');
}
else
{
exit('You tried and that is the main thing.');
}
|
connect()
connect メソッドは、FTP リソースへ手動で接続することができます。
forge() で作成された ftp オブジェクトへ自動接続ができなかった時に、このメソッドを利用できます。
静的 |
いいえ |
パラメータ |
なし
|
返り値 |
現在の FTP オブジェクト、メソッドチェーン用 |
例 |
// ftp オブジェクトを作成、しかし接続できない
$ftp = Ftp::forge(array(
'hostname' => 'ftp.example.com',
'username' => '',
'password' => '',
'timeout' => 90,
'port' => 21,
'passive' => true,
'ssl_mode' => false,
'debug' => false
), false);
// 何らかの処理
// ここでサーバに接続する
$ftp->connect();
|
change_dir($path = '')
change_dir は、"カレントディレクトリ" を変更します。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
''
|
移動したいリモートのパス。 |
|
返り値 |
boolean |
例 |
// /user/phil/public_html/some/path/ へ移動する
$ftp->change_dir('/public_html/some/path/');
|
mkdir($path, $permissions = null)
mkdir メソッドは、リモートサーバ上で新しいディレクトリを作成します。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
作成したいリモートのディレクトリ。 |
$permissions |
null
|
設定した場合は、ディレクトリへパーミッションが適用されます。 |
|
返り値 |
boolean |
例 |
// 書き込み可能なアップロードフォルダを作成する
$ftp->mkdir('/public_html/uploads/', 0777);
|
upload($local_path, $remote_path, $mode = 'auto', $permissions = null)
ローカルサーバからリモートサーバへファイルまたはディレクトリをアップロードします。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$local_path |
必須 |
ローカルサーバのパス。 |
$remote_path |
必須 |
リモートサーバのパス。 |
$mode |
'auto'
|
オプションは ascii 、binary そして auto (デフォルト) です。
もし auto が設定された場合は、ソースファイルの拡張子からモードを判断します。 |
$permissions |
null
|
設定した場合は、ディレクトリへパーミッションが適用されます。 |
|
返り値 |
boolean |
例 |
// myfile.html をアップロード
$ftp->upload('/local/path/to/myfile.html', '/public_html/myfile.html', 'ascii', 0775);
|
download($remote_path, $local_path, $mode = 'auto')
リモートサーバからローカルサーバへファイルまたはディレクトリをダウンロードします。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$remote_path |
必須 |
リモートサーバのパス。 |
$local_path |
必須 |
ローカルサーバのパス。 |
$mode |
'auto'
|
オプションは ascii 、binary そして auto (デフォルト) です。
もし auto が設定された場合は、ソースファイルの拡張子からモードを判断します。
|
|
返り値 |
boolean |
例 |
// myotherfile.html をダウンロード
$ftp->download('/public_html/myfile.html', '/local/path/to/myfile.html', 'ascii');
|
rename($old_file, $new_file, $move = false)
リモートサーバのファイルを移動または名前変更をします。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$old_file |
必須 |
移動元または名前変更前のファイル。 |
$new_file |
必須 |
移動先または名前変更後のファイル。 |
$move |
false
|
移動の場合は 'true'、名前変更の場合は 'false' 。
このフラグはデバッグエラーメッセージのみに使われます。
|
|
返り値 |
boolean |
例 |
// FTP サーバへ接続
$ftp = Ftp::forge($config);
// ファイルの名前変更
$ftp->rename('/path/to/oldfile.txt', '/path/to/newfile.txt', false);
// 接続を閉じる
$ftp->close();
|
move($old_file, $new_file)
rename() の別名。$move フラグは true にセットされます。
delete_file($filepath)
リモートサーバのファイルを削除します。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$filepath |
必須 |
削除するファイル。 |
|
返り値 |
boolean |
例 |
// FTP サーバへ接続
$ftp = Ftp::forge($config);
// ファイルを削除
if ( ! $ftp->delete_file('/path/to/file.txt'))
{
// 削除の失敗
}
// 接続を閉じる
$ftp->close();
|
delete_dir($filepath)
リモートサーバのフォルダをすべて再帰的に削除します。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$filepath |
必須 |
削除するファイル。 |
|
返り値 |
boolean |
例 |
// FTP サーバへ接続
$ftp = Ftp::forge($config);
// 全ての中身と共にフォルダを削除する
if ( ! $ftp->delete_dir('/path/to/folder'))
{
// 削除の失敗
}
// 接続を閉じる
$ftp->close();
|
chmod($path, $perm)
リモートサーバ上のファイルのパーミッションを変更します。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
必須 |
パーミッションを変更するファイル。 |
$perm |
必須 |
パーミッション。8 進数の unix 形式で定義する。 |
|
返り値 |
boolean |
例 |
// FTP server へ接続
$ftp = Ftp::forge($config);
// 全てのユーザから書き込み可能にファイルを設定する
if ( ! $ftp->chmod('/path/to/file.txt', 0666))
{
// パーミッション変更の失敗
}
// 接続を閉じる
$ftp->close();
|
list_files($path = '.')
リモートサーバ上の指定したパスにあるすべてのファイルを一覧表示します。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$path |
'.'
|
リモートサーバのパス。デフォルトはカレントディレクトリ。 |
|
返り値 |
array |
例 |
// FTP サーバへ接続
$ftp = Ftp::forge($config);
// すべてのファイルを一覧表示する
if ( $files = $ftp->list_files('/path/to/files') === false)
{
// 一覧表示の失敗
}
else
{
/* 返り値はこのようになる
$files = array(3) {
[0]=>
string(11) "public_html"
[1]=>
string(10) "public_ftp"
[2]=>
string(3) "www"
*/
}
// 接続を閉じる
$ftp->close();
|
mirror($local_path, $remote_path)
再帰的にローカルフォルダとそれに内包されたすべて (サブフォルダも含む) を読み取り、FTP 経由でミラーを作成します。
元のファイルパスがどのようなディレクトリ構造でも、サーバに再現されます。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$local_path |
'default'
|
ローカルサーバのパス。 |
$remote_path |
true
|
リモートサーバのパス。 |
|
返り値 |
boolean |
例 |
$ftp = Ftp::forge();
$ftp->connect($config);
$ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');
$ftp->close();
|
close()
close メソッドは、forge() または connect() によって作られたリモートサーバとの ftp 接続を閉じます。
静的 |
いいえ |
パラメータ |
なし
|
返り値 |
boolean |
例 |
// 接続を閉じる
if ( ! $ftp->close())
{
// 接続は開いていなかった
}
|