PHP的ftp_put操作失败
P粉884548619
P粉884548619 2023-08-24 22:05:13
[PHP讨论组]
<p>我通过FTP上传XML文件:</p> <pre class="brush:php;toolbar:false;">$ftp = "ftp"; $username = "用户名"; $pwd = "密码"; $filename = $_FILES[$xyz][$abc]; $tmp = $_FILES['file']['tmp_name']; $destination = "/Content/EnquiryXML "; $connect = ftp_connect($ftp)or die("无法连接到主机"); ftp_login($connect,$username,$pwd)or die("授权失败"); echo "已连接!&lt;br/&gt;"; if(!$filename) { echo"请选择文件"; } else { ftp_put($connect,$destination.'/'.$filename,$tmp,FTP_ASCII)or die("无法上传"); echo"文件成功上传到FTP"; }</pre> <p>我想使用<code>DOMDocument</code>创建的XML文件发送到FTP服务器,但是我无法成功。</p> <p><code>ftp_put</code>返回false。</p>
P粉884548619
P粉884548619

全部回复(2)
P粉225961749

这个工作了:

// 连接并登录到FTP服务器
$ftp_server = "主机";
$ftp_username = "用户名";
$ftp_userpass = "密码";
$ftp_conn = ftp_connect($ftp_server) or die("无法连接到 $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
$file ="$abc";

// 上传文件
if (ftp_put($ftp_conn, "/$abc" , $file, FTP_ASCII)){
    echo "成功上传文件 $file。";
} else {
    echo "上传文件 $file 出错";
}

// 关闭连接
ftp_close($ftp_conn);
P粉056618053

导致ftp_put(或任何其他传输命令,如ftp_getftp_nlistftp_rawlistftp_mlsd)出现问题的最常见原因是PHP默认为主动模式。在99%的情况下,需要切换到被动模式才能使传输正常工作。使用ftp_pasv函数

$connect = ftp_connect($ftp) or die("无法连接到主机");
ftp_login($connect, $username, $pwd) or die("授权失败");
// 打开被动模式
ftp_pasv($connect, true) or die("无法切换到被动模式");

ftp_pasv必须在ftp_login之后调用。在之前调用它没有效果。

另请参见:


此外,如果您的FTP服务器在响应PASV命令时报告了错误的IP地址(如果服务器位于防火墙/NAT后,这是相当常见的),您可能需要通过使用以下方式解决:

ftp_set_option($connect, FTP_USEPASVADDRESS, false);

参见PHP FTP + 被动FTP服务器位于NAT后面

尽管在这种情况下,正确的解决方案是修复服务器。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号