ftp_site

(PHP 4、PHP 5、PHP 7、PHP 8)

ftp_site向服务器发送 SITE 命令

描述

ftp_site(FTP\Connection $ftp, string $command): bool

ftp_site() 向 FTP 服务器发送给定的 SITE 命令。

SITE 命令没有标准化,并且在不同的服务器之间有所不同。它们对于处理诸如文件权限和组成员资格等事情很有用。

参数

ftp

一个 FTP\Connection 实例。

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 时出错');

// 执行 "SITE CHMOD 0600 /home/user/privatefile" 命令到 FTP 服务器
if (ftp_site($ftp, 'CHMOD 0600 /home/user/privatefile')) {
echo
"命令执行成功。\n";
} else {
die(
'命令失败。');
}
?>

参见

  • ftp_raw() - 向 FTP 服务器发送任意命令

添加注释

用户贡献的注释 6 个注释

www.bossftp.com
15 年前
要发送 SITE 命令并获取结果,可以尝试以下方法

<?php
function ftpsite($conn, $cmd) {
return
ftp_raw($conn, "SITE $cmd");
}
?>
Marc
21 年前
如果您需要远程命令的结果,请使用 ftp_raw() (PHP 5+) 而不是 ftp_site()。
to at mail dot isec dot pt
21 年前
嗨,
最近我不得不使用 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?
匿名
23 年前
site 命令是由某些 FTP 服务器提供的额外功能,并且取决于服务器
例如,在 proftp 服务器上尝试 "ftp> site help" (使用交互式 FTP 客户端) 会得到

214-识别以下 SITE 扩展
RATIO -- 显示所有生效的比率
识别以下 SITE 命令 (* => 表示未实现)。
HELP CHMOD
214 请将直接评论发送至 [email protected]

而在 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
daemorhedron
21 年前
我想补充一下 Ivan 的观察。除非我遗漏了显而易见的东西,当然这完全有可能,否则这个命令在不返回 SITE <foo> 请求的数据时就非常没有用。

除了显而易见的 SITE HELP 命令之外,另一个需要捕获反馈的命令是 SITE LOCATE | SITE SEARCH 命令。我完全认识到 SITE <foo> 命令确实非常专有,但事实仍然是,将此更改为返回结果,或者至少提供这样做的方法 (例如 exec() 等) 将比当前的返回 true/false 值的方法更受欢迎。

谢谢。
webmaster at beezm dot net
21 年前
我为名为 GuildFTPd 的 Windows FTP 服务器编写了一些函数。

它们是:它们非常容易理解
<?
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