目前我寫的程式碼如下,但是出現的結果都是無法上傳資料,ftp_put這邊失敗。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>FTP</title>
</head>
<body>
<?php
$ftp_server="host";
$ftp_user_name="*****";
$ftp_user_pass="*****";
$file = "demo.txt";//tobe uploaded
$remote_file = "demo.txt";
// set up basic connection
$conn_id = ftp_ssl_connect($ftp_server,21,900);
ftp_pasv($conn_id, TRUE);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// upload a file
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) {
echo "successfully uploaded $file\n";
exit;
} else {
echo "There was a problem while uploading $file\n";
exit;
}
// close the connection
ftp_close($conn_id);
?>
</body>
</html>
可以請問到底哪裡出錯了呢?
可以 login 成功, 但卻不能 Put, 通常是 Data mode 不對造成的...
對方是開 Active mode 還是 Passive mode 給你?
FileZilla 能連上, 但能傳檔嗎?
能傳進你要傳的那個資料夾底下嗎?
還有 FileZilla 有 Fallback 模式, 當你設定的 mode 連不上時, 它會自動切換另外一個 mode 去連; 你如何確定: 連上的是 Active or Passive, 沒有被他 Fallback 到另外一個去?
用 OS 底下的 FTP 指令, 以文字模式去連, 他不會自動切換 data mode, 你才會知道真正可用的 mode 是甚麼....
FileZilla可以傳檔案,確定沒問題。
只是您說的文字模式去連我就不會了...
我的程式碼中
ftp_pasv($conn_id, TRUE);
有加上這段,這就是被動模式開啟了對嗎?但是沒作用