PHP Error:
Warning: ftp_fget() [function.ftp-fget]: Illegal PORT command. in /www/php/ftp_connect.php on line 53Error: Could not download file
File Transfer Protocol(文件传输协议) ,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。
http://cct.me.ntut.edu.tw/chchting/aiahtm/computer/phphelp/function.ftp-pasv.php.htm
ftp_pasv() turns on passive mode if the pasv parameter is TRUE. It turns off passive mode if pasv is FALSE. In passive mode, data connections are initiated by the client, rather than by the server.
Returns TRUE on success or FALSE on failure.
When using the ftp_puts or ftp_fputs, if you are receiving the error: ftp_put(): Illegal PORT command.
Here is the fix, use
//SET FTP TO PASSIVE MODE
ftp_pasv($ftp_resource,TRUE);
Res:
ftp_pasv($conn,ture);