【问题标题】:FTP_NLIST PHP Is bool(false)FTP_NLIST PHP 是 bool(false)
【发布时间】:2010-06-18 17:03:12
【问题描述】:

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

它从目录复制文件并将它们下载到网站。

我对其中两个 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 />";

【问题讨论】:

    标签: php ftp


    【解决方案1】:

    你没有正确使用ftp_nlist()

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

    您的代码正在使用:

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

    除非您确实有一个名为 *.* 的目录,否则这是行不通的。

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

    例如:

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

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

    您可能还需要切换到 FTP 被动模式以应对运行脚本的主机和 FTP 主机之间的防火墙问题。详情请参考manual for ftp_pasv()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-03
      • 2012-01-03
      • 1970-01-01
      • 2015-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多