Php ftp_put,可以创建文件夹,但不能上载文件

Php ftp_put,可以创建文件夹,但不能上载文件,php,Php,我在使用ftp时遇到了一个奇怪的问题 当连接到旧的linux服务器(ftp_connect)时,我的代码工作得很好,但在尝试将文件上载到新的windows服务器(客户端选择)时失败-我们正在windows服务器上运行Filezilla服务器 可以连接到windows server works(ftp\U连接) 创建文件夹工作(ftp_mkdir) 上传文件不起作用-不知道为什么(ftp_-put) 我可以使用FileZilla上传文件 用户对Filezilla服务器具有完全权限 连接到wind

我在使用ftp时遇到了一个奇怪的问题

当连接到旧的linux服务器(ftp_connect)时,我的代码工作得很好,但在尝试将文件上载到新的windows服务器(客户端选择)时失败-我们正在windows服务器上运行Filezilla服务器

  • 可以连接到windows server works(ftp\U连接)
  • 创建文件夹工作(ftp_mkdir)
  • 上传文件不起作用-不知道为什么(ftp_-put)
  • 我可以使用FileZilla上传文件
  • 用户对Filezilla服务器具有完全权限
  • 连接到windows服务器时连接到“C:/FTP”
我完全迷路了,不知道是什么导致了这些错误。 也许你们中的一个能给我指出正确的方向

从linux服务器更改为windows服务器时,我的代码是否需要更改路径?文件夹结构完全相同(文件必须保存在名为“SE”的文件夹中)

这是我的代码:

# Conf ID
$conf_id = '7AEHQ6GS'; // for testing

# Files
$file1 = "xml/$conf_id/cylinder-tube.xml";

# FTP info
$ftp_host = '';
$ftp_port = '';
$ftp_user = '';
$ftp_pass = '';


# Connect to FTP server
$conn_id = ftp_connect($ftp_host, $ftp_port, 10);

# Connect to FTP Server
if($conn_id) {

    if(@ftp_login($conn_id, $ftp_user, $ftp_pass)) {

        if(file_exists($file1)) {

            # Change directory
            ftp_chdir($conn_id, 'SE');

            # Create folder
            ftp_mkdir($conn_id, $conf_id);

            # Change directory
            ftp_chdir($conn_id, $conf_id);

            # Upload files
            if(
                ftp_put($conn_id, basename($file1), $file1, FTP_BINARY)
            ) {

                # Delete local files
                @unlink($file1);

                # Delete local folder
                rmdir("xml/$conf_id");

            }else{
                $st['status'] = 'FTP003';
                die(json_encode($st));
            }
        }else{      
            $st['status'] = 'FEJL011';
            die(json_encode($st));
        }
    } else {
        $st['status'] = 'FTP002';
        die(json_encode($st));
    }
}else{
    $st['status'] = 'FTP001';
    die(json_encode($st));
}
这就是我的代码失败的地方:

ftp_put($conn_id, basename($file1), $file1, FTP_BINARY)
谢谢

Kenneth

如果
ftp\u put()
失败,很可能是由于防火墙保护。因此,发生这种情况是因为连接处于
活动模式

在的帮助下切换到
被动
模式,以通过防火墙安全

有关主动和被动FTP连接的更多详细信息,请参见如果
FTP\u put()
出现故障,很可能是由于防火墙保护。因此,发生这种情况是因为连接处于
活动模式

在的帮助下切换到
被动
模式,以通过防火墙安全


有关主动和被动FTP连接的更多详细信息,请参见本地php服务器上的FTP_put($conn_id,cyline-tube.xml,xml/7AEHQ6GS/cyline-tube.xml,FTP_BINARY)“xml”文件夹。“SE”文件夹位于FTP服务器上:)啊!!对不起,我的错。尝试使用FTP_ASCII。还有,看这是被动模式!感谢链接(之前已经尝试过FTP_ASCII)。使用这种方法是可行的:ftp_pasv($conn_id,true)或die(“无法切换到被动模式”);谢谢你的帮助。你能用链接和ftp_pasv发布一个答案吗?这样我就可以接受你的解决方案了ftp_put($conn_id,cyline-tube.xml,xml/7AEHQ6GS/cyline-tube.xml,ftp_BINARY)“xml”文件夹位于本地php服务器上。“SE”文件夹位于FTP服务器上:)啊!!对不起,我的错。尝试使用FTP_ASCII。还有,看这是被动模式!感谢链接(之前已经尝试过FTP_ASCII)。使用这种方法是可行的:ftp_pasv($conn_id,true)或die(“无法切换到被动模式”);谢谢你的帮助。你能用链接和ftp_pasv发布一个答案吗?这样我就可以接受你的解决方案了