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

PHP调用ftp_login报闲置10分钟断开警告但FileZilla可正常登录

问题原因
  • 你使用的FTP服务器要求必须通过显式TLS加密进行身份验证和数据传输,从FileZilla的连接日志可以看到,客户端连接后第一步就执行了AUTH TLS命令完成TLS握手,之后才提交用户名密码完成登录。
  • 你的PHP脚本使用普通明文FTP的ftp_connect函数连接服务器,没有走TLS加密流程,服务器在收到明文登录请求时会返回提示信息并拒绝登录,这个提示信息被PHP的ftp_login函数以警告的形式抛出。
解决方案

将普通明文FTP连接替换为FTP over TLS连接,同时添加对应TLS参数配置即可,修改后的参考代码如下:

$ftp_server = 'ftp.xxx.com';
$ftp_user_name = 'myusername';
$ftp_user_pass = 'mypassword';

// 用SSL加密连接代替普通明文连接
$conn_id = ftp_ssl_connect($ftp_server,21);
if ($conn_id)
{
    echo("Connected to FTP<br><br>");
}
else
{
    echo("Connection error<br>");
    exit;
}

// 测试环境如果证书不被信任可以临时关闭校验,生产环境不推荐开启
// stream_context_set_option($conn_id, 'ssl', 'verify_peer', false);
// stream_context_set_option($conn_id, 'ssl', 'verify_peer_name', false);

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if ($login_result) {
    // 登录成功后设置TLS传输参数,和FileZilla配置保持一致
    ftp_exec($conn_id, 'PBSZ 0');
    ftp_exec($conn_id, 'PROT P');
    echo "登录成功<br>";
}
var_dump($login_result);

注意事项

  • 使用ftp_ssl_connect需要你的PHP环境已经开启openssl扩展,未开启的话需要先修改php.ini配置启用extension=openssl。
  • 生产环境建议保留SSL证书校验规则,避免出现中间人攻击风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 18:45:04