php ftp_put upload fails because the server is placed behind a firewall. The solution is to enable FTP passive mode, with code such as "ftp_put($conn,"target.rar","local.rar",FTP_BINARY,0 );".
Recommendation: "PHP Video Tutorial"
The client is behind the firewall and php uses ftp to upload files when ftp_put Failure
<?php $conn = ftp_connect("ftp.bacysoft.cn") or die("Could not connect"); ftp_login($conn,"test","test1234"); ftp_put($conn,"target.rar","local.rar",FTP_BINARY,0); ftp_close($conn); echo "done"; ?>
Code description:
This code uses the FTP protocol in the background through the PHP server to upload the local file "local.rar" to the remote FTP file server and save it as "target.rar ". That is, the PHP server acts as an FTP Client to upload files to the FTP Server...
An error occurred after the above code was run. The error message is as follows:
Warning: ftp_put() [function.ftp-put]: Opening BINARY mode data connection for target.rar. in E:\wwwroot\bacysoft\wwwroot\test\temp.php on line 4 Fatal error: Maximum execution time of 60 seconds exceeded in E:\wwwroot\bacysoft\wwwroot\test\temp.php on line 5
Reason for the error:
The server is generally Place it behind the firewall, so if the FTP client program needs to traverse the firewall, it needs to enable passive mode. Otherwise, there will be no response when executing any ftp command until a fatal error of "maximum execution time timeout" occurs, causing the program to terminate...
ftp_pasv($conn, true);
Solution: Enable FTP passive mode, the correct code is as follows:
<?php $conn = ftp_connect("ftp.bacysoft.cn") or die("Could not connect"); ftp_login($conn,"test","test1234"); ftp_pasv($conn, true); ftp_put($conn,"target.rar","local.rar",FTP_BINARY,0); ftp_close($conn); echo "done"; ?>
The above is the detailed content of What to do if php ftp_put fails to upload. For more information, please follow other related articles on the PHP Chinese website!