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

如何使用PHP通过FTP将文件传输至另一服务器?(附故障代码)

PHP FTP文件传输故障排查与修复方案

核心问题分析

你的代码无法正常运行,大概率是以下几个常见问题导致的:

  • 未启用被动FTP模式:多数服务器防火墙会拦截主动模式的FTP连接,必须开启被动模式才能正常传输
  • 错误处理缺失:仅判断了连接错误,未处理登录失败的情况,会导致后续代码无意义执行
  • 文件路径或权限问题:本地文件可能不存在,或远程目标目录无写入权限

修复后的完整代码

// 连接FTP服务器
$my_connection = ftp_connect("tel.bpo.fr", 21) or exit('Erreur : connexion au serveur FTP impossible.');

// 验证登录状态,失败则终止
if (!ftp_login($my_connection, "AD_185", "UYTREE")) {
    exit('Erreur : échec de connexion avec les identifiants fournis.');
}

// 启用被动模式(必须步骤,适配大多数服务器防火墙规则)
ftp_pasv($my_connection, true);

// 本地文件路径:用__DIR__确保路径绝对正确,避免相对路径解析错误
$from = __DIR__ . "/test.csv"; 
// 远程目标文件路径
$to = "/entree/test.csv"; 

// 先检查本地文件是否存在
if (!file_exists($from)) {
    exit('Erreur : fichier local test.csv introuvable.');
}

// 执行二进制模式上传
if (ftp_put($my_connection, $to, $from, FTP_BINARY)){
    echo "Transfert réussi <br/>" ;
} else {
    echo "Erreur lors du transfert";
}

// 完成后关闭FTP连接,释放资源
ftp_close($my_connection);

额外排查步骤

  • 确认PHP已启用FTP扩展:执行phpinfo(),搜索“FTP”模块,若未找到需在php.ini中开启extension=ftp
  • 手动验证FTP连通性:用FileZilla等客户端,使用相同账号密码连接tel.bpo.fr,尝试手动上传文件,确认远程目录/entree/存在且有写入权限
  • 查看错误日志:检查PHP错误日志或Web服务器日志,获取更详细的报错信息,精准定位问题

内容的提问来源于stack exchange,提问作者yassin040

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:20:38