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'
|
選項有 ascii、binary、和 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'
|
選項有 ascii、binary、和 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())
{
// 連線未開啟
}
|