2017-08-25 1 views
-2

Würde jemand den php-Code unten prüfen überprüfen. https://www.linuxliteos.com/test_info/download.php Rückkehr:Falsches Argument für foreach php

Warning: Invalid argument für foreach geliefert() in /home/myhosthere/public_html/test_info/download.php auf Leitung 27

<? 
ini_set('max_execution_time', '18000'); 
require_once('config.php'); 
$ftp_server = 'ftpipaddresshere'; 
$ftp_user_name = 'user'; 
$ftp_user_pass = 'password'; 
$conn_id = @ftp_connect($ftp_server, 21); 
if(!$conn_id) 
{ 
    echo 'Error: Some problem in Connecting to Server!'; 
} 
else 
{ 
    ftp_pasv($conn_id, true); 
    $login_result = @ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
    if(!$login_result) 
    { 
     $error_msg = 'Error: Some problem in Connecting to Vendor Server! Cron Job failed on '.date('m/d/Y H:i:s'); 
    } 
    else 
    { 
     $arr_files = ftp_rawlist($conn_id, './upload'); 

     $arr_list = array(); 
     if(count($arr_files)) 
     { 
      foreach($arr_files as $str_file) 
      { 
       preg_match('|-rw-r--r-- 1 hwdb  hwdb.+ (\d+) ([a-zA-Z]{3} .+\d+ \d+\:\d+) (.*)|', trim($str_file), $arr_details); 
       $arr_list[] = $arr_details[3]; 
      } 
     } 
     $arr_final_list = array(); 
     foreach($arr_list as $file_name) 
     { 
      if (@ftp_get($conn_id, '/home/myhost/public_html/test_info/upload/'.$file_name, 'upload/'.$file_name, FTP_BINARY)) { 
       $arr_final_list[] = $file_name; 
       //chmod('upload/'.$file_name, 0666); 
       echo "processed"; 
       //Now do ftp delete 
       ftp_rename($conn_id, 'upload/'.$file_name, 'processed/'.$file_name); 
      } 
      else 
      { 
       echo "error"; 
      } 
     } 
    } 
} 
?> 

config.php

<? 
$host="localhost"; 
$user="dbuser"; 
$password="password"; 
$database="db"; 
$conn = mysqli_connect($host,$user,$password,$database); 

?> 

Vielen Dank im Voraus.

+2

Verwenden Sie 'var_dump', um zu überprüfen, welchen Typ Ihre Variablen tatsächlich haben und was sie zu diesem Zeitpunkt enthalten. – CBroe

+0

Ersetze '$ arr_files = ftp_rawlist ($ conn_id, './upload');' zu '$ arr_files = array(); $ arr_files = ftp_rawlist ($ conn_id, './upload'); ' – diavolic

Antwort

1

Die Funktion ftp_rawlist kann false zurückgeben:

Gibt einen Array, wobei jedes Element eine Zeile des Textes entspricht. Gibt FALSE zurück, wenn das übergebene Verzeichnis ungültig ist.

So würde $arr_files false machen. Das lustige an PHP ist, dass es 1 für count(false) zurückgibt.

So würden Sie dann für diese Bedingung testen müssen:

if ($arr_files !== false) 

Es ist nicht notwendig, die Summe zu prüfen, wie die foreach Schleife wird ohnehin nicht dann laufen.

Verwandte Themen