ftp_put上传一个空文件

Chr*_*ris 4 php ftp

我正在尝试通过ftp_put将文件上传到Windows服务器.

我的代码如下:

    $date           = date('ymd');
    $file_name      = $date.'.csv';
    $file_location  = 'D:/inetpub/wwwroot/website.com/html/assets/'.$file_name;

//set up basic connection
$conn_id = ftp_connect(FTP_HOST, FTP_PORT);

// login with username and password
$login_result = ftp_login($conn_id, FTP_USER, FTP_PASS);

// check connection
if ((!$conn_id) || (!$login_result)) { 
    echo "FTP connection has failed!"; 
    exit;
}  else { 
    echo "Connected to FTP Server";
}

$upload = ftp_put($conn_id, $file_name, $file_location, FTP_ASCII);

// check upload status
if (!$upload) { 
    echo "FTP upload has failed!"; 
} else { 
    echo "File Uploaded";
}

// close the FTP stream 
ftp_close($conn_id); 
Run Code Online (Sandbox Code Playgroud)

如果我使用filezilla手动上传文件,它可以很好地工作.如果我使用上面的代码,它会创建一个空文件.

小智 12

尝试在启用被动模式的情况下传输文件:

被动模式


Kel*_*ley 8

尝试使用FTP_BINARY而不是像这样的FTP_ASCII.

$upload = ftp_put($conn_id, $file_name, $file_location, FTP_BINARY);
Run Code Online (Sandbox Code Playgroud)

PHP ftp可能有问题,但我发现它几乎可以在二进制传输模式下工作.


Chr*_*ris 1

事实证明 UKFast 阻止了连接和传输。(他们还要求它只能处于活动模式)。

现在他们已经解锁了,一切正常。(之前似乎只是超时)