You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP FTP上传失败提示无法打开数据连接,求助排查问题

FTP传输报错:ftp_put(): Can't open data connection for transfer of "/server.txt"

问题描述

尝试用PHP传输文件时,持续出现以下错误:

Warning: ftp_put(): Can't open data connection for transfer of "/server.txt"

通过FTP应用(如WinSCP)可正常访问服务器、创建并传输文件,但PHP执行相同操作失败。

我的PHP代码

$serverFile = "server.txt";
$localfile = "/var/sites/store/publish/store-201908-1323-rev9286/www/text.txt";
$localfile = "text.txt";

//Connect to ftp
$ftp_server = "111.111.111.11";
$ftp_user_name = "username";
$ftp_user_pass = "password";

/*set up basic ssl connection*/
$ftp = ftp_ssl_connect($ftp_server);

// login with username and password
$login_result = ftp_login($ftp, $ftp_user_name, $ftp_user_pass);
ftp_pasv($ftp, true);

if($login_result){
    if (ftp_put($ftp, $serverFile, $localfile, FTP_ASCII))
    {
        Mage::log("successfully uploaded ",null,"ftp.log");
    }
}

ftp_close($ftp);   

补充信息

  • 无法修改FTP服务器配置,但之前通过远程方式成功上传过文件
  • WinSCP使用**FTP over TLS/SSL(显式)**模式连接
  • 尝试过指定端口、先在服务器创建文件再用ftp_get,结果均相同

可能的解决方案

1. 重新协商被动模式连接

部分FTP服务器在登录后需要重新触发被动模式协商,可尝试先关闭再开启被动模式:

$login_result = ftp_login($ftp, $ftp_user_name, $ftp_user_pass);
// 强制重新协商被动模式连接
ftp_pasv($ftp, false);
ftp_pasv($ftp, true);

2. 显式指定FTP端口

显式FTP over TLS默认使用21端口,若服务器有自定义端口,需在连接时指定:

// 替换为服务器实际使用的端口,通常为21
$ftp = ftp_ssl_connect($ftp_server, 21);

3. 确认本地文件路径有效性

代码中$localfile被覆盖为相对路径,需确保该路径在PHP脚本执行的当前工作目录下存在:

$localfile = "text.txt";
if (!file_exists($localfile)) {
    die("本地文件不存在:".$localfile);
}

4. 切换传输模式为二进制

部分服务器对ASCII模式的兼容性较差,尝试使用二进制模式传输:

if (ftp_put($ftp, $serverFile, $localfile, FTP_BINARY))

5. 启用FTP调试日志

开启调试模式获取更详细的错误信息,帮助定位问题:

// 开启全部错误输出
error_reporting(E_ALL);
ini_set('display_errors', 1);

// 设置FTP超时并启用调试
ftp_set_option($ftp, FTP_TIMEOUT_SEC, 30);
ftp_set_option($ftp, FTP_DEBUG, 3);

6. 检查PHP环境的SSL扩展支持

确认PHP配置中已启用OpenSSL扩展(extension=openssl),否则ftp_ssl_connect无法正常工作。


内容的提问来源于stack exchange,提问作者Natalie Hedström

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:25:30