php数据连接失败,php的ftp打开数据连接失败的问题

今天一看广州海关的文档瞬间之前看的接口文档都不是问题,广州海关的文档那个才是问题啊!说了一堆怎么定制报文格式,然后就没有然后了,可你得告诉我怎么发送报文,发送到那里?文档只字不写,坑!然后又得去问海关的人要,卧槽,广州海关那边接口太特么强大,给一个地址,用户名,密码 ,用ftp上传xml文档,瞬间觉得这种接口高大上,第一次用过这样的接口,太特么给力,给广州海关点32个赞

测试代码

$conn_id = ftp_connect($ftp_server,$ftp_port) or die("Couldn't connect to $ftp_server");

if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {

echo "Connected as $ftp_user@$ftp_server\n";

} else {

echo "Couldn't connect as $ftp_user\n";

}

//切换目录

ftp_chdir($conn_id,'UPLOAD');

//保存报文

$file = md5('订单号');

//上传海关

$ret = ftp_nb_put($conn_id, "test.remote", $file, FTP_BINARY);

while ($ret == FTP_MOREDATA) {

// 在这里可以加入其它代码

echo "异步执行代码哈哈哈哈哈哈哈.\n";

// 继续传送...

$ret = ftp_nb_continue ($conn_id);

}

if ($ret != FTP_FINISHED) {

echo "上传文件中发生错误...";

exit(1);

}

echo '传送完成';

// 关闭连接

ftp_close($conn_id);

PHP警告提示

Warning: ftp_nb_put(): Opening BINARY mode data connection for test.remote

解决方式

在登录成功之后加入ftp_pasv($conn_id, true);,打开ftp被动模式即可

原因分析

FTP连接分析

1、主动FTP:

命令连接:客户端 >1024端口 -> 服务器 21端口

数据连接:客户端 >1024端口

2、被动FTP:

命令连接:客户端 > 1024端口 -> 服务器 21端口

数据连接:客户端 > 1024端口 -> 服务器 > 1024端口

php默认是使用主动的,因此在数据传输的时候服务器端未能打开连接本地客户端,而造成数据传输失败,因此看到服务器端文件也为0个字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值