FTP_NLIST PHP是bool(false)

时间:2010-06-18 17:03:12

标签: php ftp

好吧,当我运行这个脚本时,我连接到3个不同的ip。

它从directorys复制文件并将其下载到网站。

我有两个ip的问题......

我已经开启了被动的ftp,但它似乎仍然以bool(false)的形式返回

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 />";

1 个答案:

答案 0 :(得分:2)

您没有正确使用ftp_nlist()

manual for ftp_nlist()指定第二个参数为目录名(由字符串表示)。看起来好像是在尝试表示文件名模式。

您的代码正在使用:

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

除非你有一个名为*.*的目录,否则这将不起作用。

您应该使用相对于FTP用户主目录的有效目录名替换*.*

例如:

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

将列出当前目录中的文件,该示例代码可能是$DIR/maps/

您可能还需要切换到FTP被动模式,以应对运行脚本的主机与FTP主机之间的防火墙问题。有关详细信息,请参阅manual for ftp_pasv()