Sends a SITE command to the server
(PHP 4, PHP 5)
Example 748. Sending a SITE command to an ftp server
Code Examples / Notes » ftp_site
Use ftp_raw() (PHP 5+) instead of ftp_site() if you need the results of the remote command.
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).
214 Direct comments to firstname.lastname@example.org
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
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,
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.
I wrote some functions for an ftp server for windows called GuildFTPd.
Here they are, they are pretty much so self explanitory:
ftp_site($ftp_stream,"SITE ADDUSER $group $username $password");
ftp_site($ftp_stream,"SITE ADDGROUP $groupname");
ftp_site($ftp_stream,"SITE DELUSER $username");
ftp_site($ftp_stream,"SITE ADDPATH $username $path $vpath");
ftp_site($ftp_stream,"SITE DELPATH $username $path $vpath");
ftp_site($ftp_stream,"SITE ANON ALLOW");
ftp_site($ftp_stream,"SITE ANON DENY");
ftp_site($ftp_stream,"SITE CHPASS $user $pass");
ftp_site($ftp_stream,"SITE DISABLE $user");
ftp_site($ftp_stream,"SITE ENABLE $user");
$who = ftp_site($ftp_stream,"SITE WHO");
ftp_site($ftp_stream,"SITE KICK $user");
ftp_site($ftp_stream,"SITE MSG $text");
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!