Adi*_*att 9 php ftp file transfer
当我尝试使用PHP的ftp_put函数上传文件时,之前它出错了:
Warning: ftp_put() [function.ftp-put]: No data connection
现在,我试图将被动模式放在:
ftp_pasv($conn_id, true);
然后出现错误:
Warning: ftp_put() [function.ftp-put]: Type set to I. in
ftp_login已正确完成,并表示已成功完成.
现在它给出了新警告:警告: ftp_put() [function.ftp-put]: abc.txt: Cannot open or remove a file containing a running program.
任何想法,为什么文件不转移?
谢谢 !
这是我的代码片段:
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die("You do not have access to this ftp server!");
if ((!$conn_id) || (!$login_result)) {
// wont ever hit this, b/c of the die call on ftp_login
echo "<span style='color:#FF0000'><h2>FTP connection has failed! <br />";
echo "Attempted to connect to $ftp_server for user $ftp_user_name</h2></span>";
exit;
} else {
//echo "Connected to $ftp_server, for user $ftp_user_name <br />";
}
//turn passive mode on
ftp_pasv($conn_id, true);
$upload = ftp_put($conn_id, $destination_file.$name, $filename, FTP_BINARY);
if (!$upload) {
echo "<span style='color:#FF0000'><h2>FTP upload of $filename has failed!</h2></span> <br />";
} else {
echo 'Uploaded';
}
ftp_close($conn_id);
Run Code Online (Sandbox Code Playgroud)
Mar*_*tin 15
$resource = ftp_connect('ftp.example.com');
ftp_login($resource, 'username', 'password');
# set this to true
ftp_pasv($resource, true);
ftp_get(...);
ftp_put(...);
Run Code Online (Sandbox Code Playgroud)
我收到相同(不是非常具有描述性)的错误消息E_WARNING ftp_get(): Type set to I..
我发现这是因为运行PHP的服务器没有可见的公共IP(它是我工作站上的虚拟服务器).
解决方案是使用被动模式.默认设置(活动模式)在实时服务器上没有问题,因为实时服务器具有可见的公共IP.
当 FTP 守护程序卡在打开的上传文件并等待您写入时,您看到的最后一个错误就会发生。
每当您通过 FTP 服务器成功打开连接时,请准备在进程完成或由于任何错误而终止时使用以下函数关闭连接。
ftp_close($conn_id);
Run Code Online (Sandbox Code Playgroud)
您的脚本可能将其连接保持打开状态,并且 FTP 服务器对此感到困惑。尝试在适当的地方添加ftp_close,看看脚本运行是否更流畅。
| 归档时间: |
|
| 查看次数: |
22829 次 |
| 最近记录: |