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

PHP脚本上传文件至FTP服务器失败求助

PHP FTP上传失败排查与修复

针对你遇到的FTP上传报错问题,结合代码逐一排查核心问题:

1. 本地文件路径错误(最可能原因)

你的代码中$src_file = $_FILES['srcfile']['name'];仅获取了上传文件的原始文件名,但ftp_put需要的是服务器临时存储文件的路径,而非文件名。正确的临时文件路径是$_FILES['srcfile']['tmp_name'],这是PHP接收上传文件后存在服务器临时目录的真实路径。

2. 远程目录路径不匹配

你设置的$remote_dir = '/upload/'是FTP根目录下的upload文件夹,但你的目标是网站目录mydomain/test/upload/,而FTP的根目录通常与网站根目录(比如public_html或www)不同。需要确认FTP服务器上对应网站目录的实际路径,比如可能是/public_html/test/upload/,而非直接/upload/。

3. 文件传输模式错误

使用FTP_ASCII模式仅适合文本类文件(如txt、php),如果上传二进制文件(图片、视频、压缩包等)会导致文件损坏上传失败。建议统一使用FTP_BINARY模式,兼容性更强。

4. 未确认FTP目录权限与存在性

  • 需确保FTP用户对目标远程目录有写入权限
  • 可提前用ftp_chdir()切换到目标目录,验证目录是否存在;若不存在,可尝试用ftp_mkdir()创建(需权限)

修正后的完整代码示例

// ftp settings
$ftp_hostname = 'xxxx'; // 修改为你的FTP主机
$ftp_username = 'xxxx'; // 修改为你的FTP用户名
$ftp_password = 'xxxx'; // 修改为你的FTP密码
// 替换为FTP服务器上的实际目标路径,例如 /public_html/test/upload/
$remote_dir = '/public_html/test/upload/'; 
$tmp_file = $_FILES['srcfile']['tmp_name']; // 服务器临时文件路径
$src_filename = $_FILES['srcfile']['name']; // 原始文件名

if (!empty($tmp_file) && is_uploaded_file($tmp_file))
{
    // 拼接远程文件完整路径
    $dst_file = rtrim($remote_dir, '/') . '/' . $src_filename;
    
    // 连接FTP
    $ftpcon = ftp_connect($ftp_hostname) or die('连接FTP服务器失败...');
    
    // FTP登录
    $ftplogin = ftp_login($ftpcon, $ftp_username, $ftp_password);
    
    // 切换到目标目录(验证目录是否存在且有权限)
    if (!ftp_chdir($ftpcon, $remote_dir)) {
        echo '无法访问目标目录,请检查路径或权限!';
        ftp_close($ftpcon);
        exit;
    }
    
    // 二进制模式上传
    if (ftp_put($ftpcon, $src_filename, $tmp_file, FTP_BINARY))
        echo '文件成功上传至FTP服务器!';
    else
        echo '文件上传失败,请稍后重试!';
    
    // 关闭FTP连接
    ftp_close($ftpcon);
}
else
    header('Location: index.php');

额外排查建议

  • 开启PHP错误提示,添加error_reporting(E_ALL); ini_set('display_errors', 1);在脚本开头,查看是否有隐藏错误
  • 用FTP客户端(如FileZilla)手动连接FTP,确认目标目录路径、权限是否正常,手动上传文件验证是否可行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:03:06