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'
オプションは asciibinary そして 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'
オプションは asciibinary そして 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())
{
	// 接続は開いていなかった
}