FTPS登录成功但ftp_put上传失败,报错php_connect_nonb()该如何解决?
解决FTPS上传失败(php_connect_nonb()报错)的踩坑记录
我花了整整半天时间才搞定这个FTPS文件上传的问题,现在把问题细节和排查过程分享出来,希望能帮到遇到同样困境的开发者:
初始实现代码
$host = ... $user = ... $pass = ... $conn = ftp_ssl_connect($host, 22); if($conn === false) { die('could not connect :('); } $login_result = ftp_login($conn, $user, $pass); ftp_pasv($conn, true); $file = realpath('test.txt'); echo 'putting file '.$file."\n"; ftp_put($conn, 'test.txt', $file, FTP_BINARY); ftp_close($conn);
问题现象
FTPS的连接与登录步骤都能成功执行,但调用ftp_put上传文件时会卡住,等待约一分钟后抛出如下报错:
Warning: ftp_put(): php_connect_nonb() failed: Operation now in progress (36)
已排除的常见诱因
- 排除被动模式的影响:我反复尝试开启和关闭被动模式(切换
ftp_pasv的参数),问题依然存在,这和多数同类问题的原因不同
额外说明
我知道FTPS通常默认使用21端口,但这次对接的是第三方服务,端口只能指定为22,没有其他选择
内容的提问来源于stack exchange,提问作者Vincent Pazeller
相关产品推荐
相关产品推荐

