2
我使用ftp_connect和ftp_login連接到FTP。ftp_fget():服務器無法接受隨機讀取參數
$this->connID = ftp_connect($this->host, 21, static::FTP_TIMEOUT);
if (!$this->connID) {
throw new \Exception('Connection to FTP: '. $this->host .' failed.');
}
$loginResult = ftp_login($this->connID, $this->username, $this->password);
if(!$loginResult) {
throw new \Exception('Auth for FTP user ' .$this->username. ' failed.');
}
之後我使用下面的命令集檢查DIR是否存在。
$resultPwd = ftp_pwd($this->connID);
if ($resultPwd===false) {
throw new \Exception ('Command ftp_pwd failed.');
}
$resultChdir = ftp_chdir($this->connID, $this->filesDir);
if ($resultChdir===false) {
throw new \Exception ('ftp_chdir failed, its most likely that directory: ' .$this->filesDir . ' does not exists');
}
$resultChdirBack = ftp_chdir($this->connID, $resultPwd);
if ($resultChdirBack===false) {
throw new \Exception ('Directory test failed, coult not set back directory to: '. $resultChdirBack);
}
之後,我得到下面的代碼文件(200)的列表:
$arrFilePath= ftp_nlist($this->connID, $this->filesDir);
之後,我遍歷文件和閱讀:
$resultGet = ftp_fget($this->connID, $fhTemp, $remoteFilePath, FTP_ASCII);
的問題是那對於讀取未知數量的文件後ftp_fget失敗,我得到:
Warning: ftp_fget(): Server cannot accept argument.
我也試過每個文件迭代關閉連接並再次打開它,但它並沒有解決問題。
我也在嘗試設置被動連接,但我的FTP服務器似乎無法正確使用被動模式,因爲切換到被動模式後每個單獨的命令都會失敗。
此外,我已超時15秒。
什麼可能是錯的?
謝謝。
你可以通過pastebin或其他東西附上完整的代碼。我可以連接到我的ftp服務器並嘗試重新生成相同的問題。 – Jigar