2024 年 PHP Conference Japan

ftp_site

(PHP 4, PHP 5, PHP 7, PHP 8)

ftp_site傳送 SITE 命令到伺服器

說明

ftp_site(FTP\連線 $ftp, 字串 $command): 布林值

ftp_site() 將指定的 SITE 命令傳送到 FTP 伺服器。

SITE 命令並非標準化的,並且會因伺服器而異。它們可用於處理檔案權限和群組成員資格等事項。

參數

ftp

一個 FTP\連線 實例。

command

SITE 命令。請注意,此參數並未逸出,因此檔名中包含空格和其他字元可能會有一些問題。

回傳值

成功時回傳 true,失敗時回傳 false

更新日誌

版本 說明
8.1.0 現在,`ftp` 參數需要一個 FTP\Connection 實例;先前,它需要一個 資源

範例

範例 #1 向 FTP 伺服器發送 SITE 命令

<?php
// 連線到 FTP 伺服器
$ftp = ftp_connect('ftp.example.com');
if (!
$ftp) die('無法連線到 ftp.example.com');

// 以使用者名稱 "user" 和密碼 "pass" 登入
if (!ftp_login($ftp, 'user', 'pass')) die('登入 ftp.example.com 失敗');

// 向 FTP 伺服器發送 "SITE CHMOD 0600 /home/user/privatefile" 命令
if (ftp_site($ftp, 'CHMOD 0600 /home/user/privatefile')) {
echo
"命令執行成功。\n";
} else {
die(
'命令執行失敗。');
}
?>

參見

  • ftp_raw() - 向 FTP 伺服器發送任意命令

新增註記

使用者貢獻的註記 6 則註記

0
www.bossftp.com
16 年前
要發送 SITE 命令並取得結果,您可以試試這個

<?php
function ftpsite($conn, $cmd) {
return
ftp_raw($conn, "SITE $cmd");
}
?>
0
Marc
21 年前
如果您需要遠端命令的結果,請使用 ftp_raw() (PHP 5+) 來取代 ftp_site()。
0
to at mail dot isec dot pt
22 年前
嗨,
最近我必須使用 PHP 處理 FTP,由於我沒有找到任何關於這個主題的幫助,所以我決定在這裡發布這個。如果您需要更改檔案的權限,我在 FTP 伺服器上使用 FTP 用戶端測試了這個,在我知道 FTP 伺服器支援 chmod 之後,我使用了以下命令
$upload = ftp_put($conn_id, "/home/to/public_html/index.php", $source_file, FTP_ASCII);
$ch=@ftp_site($conn_id,"chmod 755 /home/to/public_html/index.php");

希望這有幫助!

T?
0
匿名
23 年前
SITE 指令是由某些 FTP 伺服器提供的額外功能,且取決於伺服器本身。
例如,在 ProFTPD 伺服器上使用互動式 FTP 用戶端嘗試輸入「ftp> site help」會得到:

214-以下 SITE 延伸指令可被辨識
RATIO -- 顯示所有生效的比率
以下 SITE 指令可被辨識 (* 表示尚未實作)。
HELP CHMOD
214 直接評論請寄至 admin@ftp.blahblah.fr

而在 WU-FTPD 上,通常會得到:

214-以下 SITE 指令可被辨識 (* 表示尚未實作)。
UMASK GROUP INDEX GROUPS
IDLE GPASS EXEC CHECKMETHOD
CHMOD NEWER ALIAS CHECKSUM
HELP MINFO CDPATH
214 blabla

遺憾的是,`ftp_site` 只會回傳 true 或 false。如果能完整取得伺服器的回覆會更好:`ftp_site('help')` 回傳 1,這幾乎沒什麼用。

希望以上說明有所幫助,

Ivan
-1
daemorhedron
22 年前
我想補充 Ivan 的觀察。除非我漏掉了顯而易見的部分(當然這完全有可能),否則除非這個指令能回傳 SITE <foo> 請求的資料,否則它相當無用。

除了顯而易見的 SITE HELP 指令外,另一個需要擷取回饋的指令是 SITE LOCATE 或 SITE SEARCH 指令。我完全理解 SITE <foo> 指令確實具有高度專屬性,但事實仍然是,將其更改為回傳結果,或者至少提供回傳結果的選項(例如像 `exec()` 之類的函式),會比目前只回傳 true/false 值的方法好得多。

謝謝。
-3
webmaster at beezm dot net
21 年前
我為 Windows 的 FTP 伺服器 GuildFTPd 寫了一些函式。

它們就在這裡,它們的說明相當淺顯易懂
<?
function guildftpd_adduser($ftp_stream,$group,$username,$password){
ftp_site($ftp_stream,"SITE ADDUSER $group $username $password");
}
function guildftpd_addgroup($ftp_stream,$groupname){
ftp_site($ftp_stream,"SITE ADDGROUP $groupname");
}
function guildftpd_deluser($ftp_stream,$username){
ftp_site($ftp_stream,"SITE DELUSER $username");
}
function guildftpd_addpath($ftp_stream,$username,$path,$vpath){
ftp_site($ftp_stream,"SITE ADDPATH $username $path $vpath");
}
function guildftpd_delpath($ftp_stream,$username,$path,$vpath){
ftp_site($ftp_stream,"SITE DELPATH $username $path $vpath");
}
function guildftpd_anon($ftp_stream){
ftp_site($ftp_stream,"SITE ANON ALLOW");
}
function guildftpd_anond($ftp_stream){
ftp_site($ftp_stream,"SITE ANON DENY");
}
function guildftpd_chpass($ftp_stream,$user,$pass){
ftp_site($ftp_stream,"SITE CHPASS $user $pass");
}
function guildftpd_disable($ftp_stream,$user){
ftp_site($ftp_stream,"SITE DISABLE $user");
}
function guildftpd_enable($ftp_stream,$user){
ftp_site($ftp_stream,"SITE ENABLE $user");
}
function guildftpd_who($ftp_stream){
$who = ftp_site($ftp_stream,"SITE WHO");
}
function guildftpd_kick($ftp_stream,$user);
ftp_site($ftp_stream,"SITE KICK $user");
}
function guildftpd_msg($ftp_stream,$text);
ftp_site($ftp_stream,"SITE MSG $text");
}
?>
To Top