You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PHP 7.1.4(Ionic2后端)FTP服务器创建文件夹异常求助

解决PHP FTP创建文件夹显示成功但实际不存在的问题

这问题我之前排查过类似的,核心矛盾是FTP路径匹配错误或者权限限制导致的,咱们一步步拆解排查:

  • 先确认FTP当前工作目录
    很多时候FTP登录后的默认目录并不是你网站的根目录(比如可能是/home/your-username/,而网站根目录是/home/your-username/public_html/)。你可以在ftp_mkdir代码前加一行输出当前路径:

    echo "当前FTP工作目录:" . ftp_pwd($ftp_conn);
    

    看看输出的路径是不是你预期的目标目录父级,大概率这里会发现路径不对——你以为在网站根目录创建文件夹,实际是在FTP默认目录创建了,而这个目录不在网站的可访问范围内,所以你看不到。

  • 改用绝对路径创建文件夹
    不要依赖相对路径,直接使用FTP服务器的绝对路径来指定创建位置,比如:

    $folder_path = "/home/your-username/public_html/images";
    ftp_mkdir($ftp_conn, $folder_path);
    

    这样能彻底避免当前工作目录的混淆问题。

  • 检查权限与目录存在性的真实状态
    虽然第二次访问提示“File exists”,但实际看不到文件夹,可能是:

    1. 文件夹被创建在你没有权限查看的目录(比如FTP用户的私有目录);
    2. 服务器的FTP服务启用了chroot jail,限制了你只能在指定子目录操作,超出范围的创建请求会被“伪装”成成功/已存在。
      你可以用ftp_nlist列出当前目录的所有内容,验证是否真的存在该文件夹:
    $files = ftp_nlist($ftp_conn, ".");
    print_r($files); // 输出当前目录下的所有文件和文件夹
    
  • 修正后的完整示例代码
    结合上面的排查点,给你一个更严谨的代码示例:

    <?php
    $ftp_host = "你的FTP服务器地址";
    $ftp_user = "FTP用户名";
    $ftp_pass = "FTP密码";
    
    // 建立FTP连接
    $ftp_conn = ftp_connect($ftp_host) or die("无法连接到FTP服务器");
    $login_success = ftp_login($ftp_conn, $ftp_user, $ftp_pass);
    
    if (!$login_success) {
        die("FTP登录失败");
    }
    
    // 输出当前工作目录,用于排查路径问题
    echo "当前FTP工作目录:" . ftp_pwd($ftp_conn) . "<br>";
    
    // 使用绝对路径指定要创建的文件夹
    $target_folder = "/home/your-username/public_html/images";
    
    // 先检查文件夹是否真实存在
    $folder_exists = in_array(basename($target_folder), ftp_nlist($ftp_conn, dirname($target_folder)));
    
    if (!$folder_exists) {
        if (ftp_mkdir($ftp_conn, $target_folder)) {
            echo "Successfully created images";
        } else {
            echo "Error while creating images";
        }
    } else {
        echo "Directory already exists";
    }
    
    // 关闭FTP连接
    ftp_close($ftp_conn);
    ?>
    

另外还要注意:有些服务器会禁用FTP的主动模式,如果你遇到连接问题,可以尝试切换到被动模式:ftp_pasv($ftp_conn, true);

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

火山引擎 最新活动