Ftp 类別

FTP 类別能让你透過 FTP 協定對遠端伺服器上傳、下载、移动和鏡像档案。

配置

FTP 类別透過 fuel/core/config/ftp.php 配置档案進行配置。它已经填充了一个預設配置群組。你可以藉由複製此配置档案到你的应用程序 config 目录,并根據需求修改該档案,以覆寫此配置群組并添加新群組。

以下配置設定可以被定義:

參数 类型 預設 描述
hostname 字串
'localhost'
要連接的 FTP 伺服器的 IP 或網域名稱。
username 字串
''
選擇性:要連接的使用者名稱,如果登入是必要的話。
password 字串
''
選擇性:要連接的使用者密码,如果登入是必要的話。
timeout 整数
90
所有後續的網路操作超時(秒)。
port 整数
21
你的 FTP 伺服器回應的連接埠號。大多数伺服器使用 21。
passive 布林
true
是否使用被动模式。預設情況下被动模式自动被設定。
ssl_mode 布林
false
使用比通常的 FTP 稍微安全一點的 FTPS。(注:这不是 SFTP)。
debug 布林
false
是否啟用除错以顯示错误訊息。

forge($config = 'default', $connect = true)

forge 方法被用於建立一个新的 FTP 类別實例,可以是不同配置群組的參照, 或傳遞一个 配置選項 的陣列。

靜態
參数
參数 預設 描述
$config
'default'
要使用的配置群組名稱,或一个配置陣列。
$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
''
要移往的遠端路徑。
回傳 布林
範例
// 移往 /user/phil/public_html/some/path/
$ftp->change_dir('/public_html/some/path/');

mkdir($path, $permissions = null)

mkdir 方法用於在遠端伺服器建立一个新目录。

靜態
參数
參数 預設 描述
$path 必要 要建立的遠端目录。
$permissions
null
如果設定,權限将被應用到該目录。
回傳 布林
範例
// 建立一个可寫入的上傳文件夾
$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
如果設定,權限将被應用到該目录。
回傳 布林
範例
// 上傳 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,它将依據來源档案的副档名使用模式。
回傳 布林
範例
// 下载 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' 如果是一个更名。 此标誌只用於错误訊息除错。
回傳 布林
範例
// 連線到一个 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 必要 要被刪除的档案。
回傳 布林
範例
// 連線到一个 FTP 伺服器
$ftp = Ftp::forge($config);

// 刪除一个档案。
if ( ! $ftp->delete_file('/path/to/file.txt'))
{
	// 刪除失敗
}

// 關閉連線
$ftp->close();

delete_dir($filepath)

從遠端伺服器刪除一个目录并遞迴在其中的任何東西。

靜態
參数
參数 預設 描述
$filepath 必要 要被刪除的档案。
回傳 布林
範例
// 連線到一个 FTP 伺服器
$ftp = Ftp::forge($config);

// 刪除一个目录及所有它的內容
if ( ! $ftp->delete_dir('/path/to/folder'))
{
	// 刪除失敗
}

// 關閉連線
$ftp->close();

chmod($path, $perm)

在遠端伺服器變更一个档案的權限。

靜態
參数
參数 預設 描述
$path 必要 要變更權限的档案。
$perm 必要 權限,unix 風格定義,为一个八進位值。
回傳 布林
範例
// 連線到一个 FTP 伺服器
$ftp = Ftp::forge($config);

// 使档案为全部可寫
if ( ! $ftp->chmod('/path/to/file.txt', 0666))
{
	// 變更權限失敗
}

// 關閉連線
$ftp->close();

list_files($path = '.')

表列在遠端伺服器上所給路徑中的所有档案。

靜態
參数
參数 預設 描述
$path
'.'
遠端伺服器路徑。預設为目前目录
回傳 陣列
範例
// 連線到一个 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
遠端伺服器路徑。
回傳 布林
範例
$ftp = Ftp::forge();

$ftp->connect($config);

$ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/');

$ftp->close();

close()

close 方法關閉一个 forge()connect() 建立的開啟到遠端伺服器的 ftp 連線。

靜態
參数
回傳 布林
範例
// 關閉一條連線
if ( ! $ftp->close())
{
	// 連線未開啟
}