27. marts 2008 - 12:29Der er
6 kommentarer og 2 løsninger
ftp_get ved flere filer
Hej. Jeg sidder og leget lidt med php's ftp funktionalitet og er stødt ind i et problem.
Jeg har 2 servere stående, hvor jeg ønsker at overføre filer imellem med et php script. På den "server1" ligger en liste over filer der skal overføres til "server2".
Ved et phpscript på "server2" skal den hente denne fil og åbne den. (hvilket virker fint nok) Problemet kommer så når jeg videre skal hente alle de filer der ligger i listen. Jeg har lavet følgende funktion:
function getupdate($ftp_host, $ftp_user, $ftp_pass, $file){ $conn_id = ftp_connect($ftp_host); ftp_set_option($conn_id,FTP_TIMEOUT_SEC,150); $login_result = ftp_login($conn_id, $ftp_user, $ftp_pass); if ((!$conn_id) || (!$login_result)){ // FTP connection has failed exit; } else { if (ftp_chdir($conn_id, "html")) { $local_file = "update/".$file; $server_file = $file; $download = ftp_nb_get($conn_id,$local_file,$server_file,FTP_ASCII); } } // close the FTP stream ftp_close($conn_id); }
//Hent oversigt over filer getupdate($ftp_host, $ftp_user, $ftp_pass, "files.txt");
Hvis listen udelukkende indeholder 1 filnavn overføres denne som den skal, men ved flere overføres udelukkende den sidste og fejlmeddelelsen: "Warning: ftp_nb_get() [function.ftp-nb-get]: PORT command successful. Consider using PASV. in /var/www/web11/html/index.php on line 18"
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Evt kan du lave en lille debug for lige at tjekke hvad dit script laver: foreach ($array AS $key => $currentfile) { echo "Filen: ".$currentfile." hentes<br />"; getupdate($ftp_host, $ftp_user, $ftp_pass, $currentfile); }
Og i din funktion: if (ftp_chdir($conn_id, "html")) { $local_file = "update/".$file; $server_file = $file; $download = ftp_nb_get($conn_id,$local_file,$server_file,FTP_ASCII); if($download == FTP_FAILED) echo "Der skete en fejl under henting af filen: ".$file"<br />; }
Du bør måske også, når du vælger at bruge ftp_nb_get(), at vente med at overføre den næste fil indtil den først er færdig, ved dog ikke lige om det har nogen betydning.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.