PHP 8.4.2 Released!

ftp_site

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

ftp_siteSends a SITE command to the server

Опис

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

ftp_site() sends the given SITE command to the FTP server.

SITE commands are not standardized, and vary from server to server. They are useful for handling such things as file permissions and group membership.

Параметри

ftp

Примірник FTP\Connection.

command

The SITE command. Note that this parameter isn't escaped so there may be some issues with filenames containing spaces and other characters.

Значення, що повертаються

Повертає true у разі успіху або false в разі помилки.

Журнал змін

Версія Опис
8.1.0 Тепер параметр ftp має бути примірником FTP\Connection. Раніше очікувався resource.

Приклади

Приклад #1 Sending a SITE command to an ftp server

<?php
// Connect to FTP server
$ftp = ftp_connect('ftp.example.com');
if (!
$ftp) die('Unable to connect to ftp.example.com');

// Login as "user" with password "pass"
if (!ftp_login($ftp, 'user', 'pass')) die('Error logging into ftp.example.com');

// Issue: "SITE CHMOD 0600 /home/user/privatefile" command to ftp server
if (ftp_site($ftp, 'CHMOD 0600 /home/user/privatefile')) {
echo
"Command executed successfully.\n";
} else {
die(
'Command failed.');
}
?>

Прогляньте також

  • ftp_raw() - Sends an arbitrary command to an FTP server

add a note

User Contributed Notes 6 notes

up
0
www.bossftp.com
16 years ago
To send a SITE command and get the result, you can try this:

<?php
function ftpsite($conn, $cmd) {
return
ftp_raw($conn, "SITE $cmd");
}
?>
up
0
to at mail dot isec dot pt
22 years ago
Hya,
Recently I had to work with FTP over PHP, since I didn't found any help about this topic I decided to post this here. If you need to chmod one file, I tested this on the ftp server using a ftp client and after I knew that the ftp server supported chmod I used the following commands:
$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");

Hope this help!

T
up
0
Anonymous
23 years ago
site commands are extra-functionality provided by some ftp servers, and depend on the server :
e.g. trying "ftp> site help" (with an interactive ftp client) on a proftp server would give :

214-The following SITE extensions are recognized:
RATIO -- show all ratios in effect
The following SITE commands are recognized (* =>'s unimplemented).
HELP CHMOD
214 Direct comments to admin@ftp.blahblah.fr

while with wu-ftpd on can typically get :

214-The following SITE commands are recognized (* =>'s unimplemented).
UMASK GROUP INDEX GROUPS
IDLE GPASS EXEC CHECKMETHOD
CHMOD NEWER ALIAS CHECKSUM
HELP MINFO CDPATH
214 blabla

Unfortunately, ftp_site only returns true or false. It would be nice to have a way to get the server's reply in full : ftp_site('help') return 1, which pretty much useless.

Hope that helps,

Ivan
up
-1
Marc
21 years ago
Use ftp_raw() (PHP 5+) instead of ftp_site() if you need the results of the remote command.
up
-1
daemorhedron
22 years ago
I'd like to follow up with Ivan's observation there. Unless I am missing the obvious, which is entirely possible of course, this command is quite useless unless it returns the data from the SITE <foo> request.

Besides the obvious SITE HELP command, another one that would require catching the feedback would be the SITE LOCATE | SITE SEARCH commands. I completely recognize that SITE <foo> commands are indeed insanely proprietary, but the fact still remains that changing this to return the results, or at least having the option to do so (such as exec() and the like) would be vastly preferred to the current method of returning true/false values.

Thanks.
up
-3
webmaster at beezm dot net
21 years ago
I wrote some functions for an ftp server for windows called GuildFTPd.

Here they are, they are pretty much so self explanitory:
<?
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