2010-06-18 99 views
2

好吧,我運行這個腳本時連接到3個不同的ip。FTP_NLIST PHP是bool(false)

它從directorys複製文件並將它們下載到網站。

我在與他們兩個IP的一個小問題...

我已經打開FTP被動,但它仍然似乎又回來了作爲布爾(假)

Updating server 1 
bool(false) 
Warning: ftp_get() [function.ftp-get]: Filename cannot be empty in updater.php on line  42 

Warning: ftp_get() [function.ftp-get]: Error opening in updater.php on line 42 
Updated cache... 
bool(false) 
Warning: ftp_get() [function.ftp-get]: Filename cannot be empty in updater.php on line  60 

Warning: ftp_get() [function.ftp-get]: Error opening in updater.php on line 60 
BZh9rE8PUpdated maps... 
Updating server 2 
bool(false) 
Warning: ftp_get() [function.ftp-get]: Filename cannot be empty in updater.php on line  103 

Warning: ftp_get() [function.ftp-get]: Error opening in updater.php on line 103 
Updated cache... 
bool(false) 
Warning: ftp_get() [function.ftp-get]: Filename cannot be empty in updater.php on line  121 

Warning: ftp_get() [function.ftp-get]: Error opening in updater.php on line 121 
BZh9rE8PUpdated maps... 
Updating server 3 
array(1) { [0]=> string(36) "1ba90fa2e972b50cdaa6bb23c403296b.dua" } Updated cache... 
array(8) { [0]=> string(6) "graphs" [1]=> string(22) "sb_Forlorn_sb3_R2L.bsp" [2]=>  string(17) "sb_gooniverse.bsp" [3]=> string(22) "sb_lostinspace_rc5.bsp" [4]=> string(19)  "sb_new_worlds_2.bsp" [5]=> string(22) "sb_Spacewar_SB3_V1.bsp" [6]=> string(21)  "sb_twinsuns_fixed.bsp" [7]=> string(10) "soundcache" } Updated maps... 

。部分腳本:

ftp_pasv($conn, true); 
ftp_chdir($conn,"$DIR/maps/"); 

$files = ftp_nlist($conn,"*.*"); 
var_dump($files); 

chdir('sandbox/cache/'); 

for($i=0;$i<count($files);$i++){ 
    if(!ftp_is_dir($files[$i])){ 
     usleep(500000); 
     if(!file_exists($files[$i])){ 
      ftp_get($conn,$files[$i],$files[$i],FTP_ASCII); 
     } 
    } 
} 

echo "Updated cache...<br />"; 

回答

2

您沒有正確使用ftp_nlist()

manual for ftp_nlist()指定第二個參數爲目錄名(用字符串表示)。它看起來好像你是在試圖表示一個文件名模式。

你的代碼使用:

$files = ftp_nlist($conn,"*.*"); 

除非你有一個名爲*.*目錄這將無法工作。

您應該用相對於FTP用戶主目錄的有效目錄名替換*.*

例如:

$files = ftp_nlist($conn, "."); 

會在當前目錄下,這很可能是$DIR/maps/相對於您的示例代碼列出文件。

您可能還需要切換到FTP被動模式以應對運行腳本的主機與FTP主機之間的防火牆問題。詳情請參閱manual for ftp_pasv()