2臺服務(wù)器,一臺做ftp服務(wù)器,一臺做web服務(wù)器。
我使用的thinkphp3.2得Upload類,使用了上傳FTP驅(qū)動,但是每次都說文件保存失敗。
我尋找答案,異步和同步都測試,都不行,遠(yuǎn)程端/tmp/ 和ftp目錄也有777權(quán)限。
Thinkphp應(yīng)該很成熟,后面我在官方的文檔找到了一些答案,其中有解釋模式
ftp服務(wù)器主動模式,ftp服務(wù)器被動模式,我使用 ftp_pasv($this->link,true); 切換到被動模式,客戶端就可以順利上傳文件了。
下面是解決方案
Upload/Driver/Ftp.class.php sava函數(shù)
public function save($file, $replace=true) {
$filename = $file['rootPath']. $file['savepath'] . $file['savename'];
/* 不覆蓋同名文件 */
// if (!$replace && is_file($filename)) {
// $this->error = '存在同名文件' . $file['savename'];
// return false;
// }
ftp_pasv($this->link,true);
ftp_pwd($this->link);
$filename=$file['savename'];
if (!ftp_put($this->link, $filename, $file['tmp_name'],FTP_ASCII)) {
$this->error = '文件上傳FTP錯誤!';
return false;
}
return true;
}