使用Php从FTP获取文件

使用Php从FTP获取文件,php,ftp,Php,Ftp,我正在尝试使用php中的ftp从另一台服务器获取一个文件到我的服务器 有两个步骤。第一步是从我成功完成的服务器发送文件 现在我需要从仓库ftp服务器获取一个文件。我成功地连接到它,并从那里获得了文件列表。但是我不知道我怎样才能拿到它。这里是发送代码。我尝试在我的服务器和仓库服务器之间切换,但它不起作用,并且一直说文件不存在,因为文件在那里 有什么想法吗 这是发送文件的代码 $ftp_server = SERVER_IP; $ftp_user_name = FTP_USER; $ftp_us

我正在尝试使用php中的ftp从另一台服务器获取一个文件到我的服务器

有两个步骤。第一步是从我成功完成的服务器发送文件

现在我需要从仓库ftp服务器获取一个文件。我成功地连接到它,并从那里获得了文件列表。但是我不知道我怎样才能拿到它。这里是发送代码。我尝试在我的服务器和仓库服务器之间切换,但它不起作用,并且一直说文件不存在,因为文件在那里

有什么想法吗

这是发送文件的代码

$ftp_server    = SERVER_IP;
$ftp_user_name = FTP_USER;
$ftp_user_pass = FTP_PASS;
$ftp_dir       = "public_html/inbound/";
$mode          = "list_xml_files";
$file          = "";

if ($file_list = ftp_list_xml_files ($ftp_server,$ftp_user_name,$ftp_user_pass,$ftp_dir,$mode,$file)) {

$ftp_server    = WAREHOUE_SERVER;
$ftp_user_name = WAREHOUSE_FTP_USER;
$ftp_user_pass = WAREHOUSE_FTP_PASS;
$ftp_dir       = FILE_DIRECTORY;
$mode          = "ftp_to_warehouse";

foreach ($file_list as $v) {

if ($file_uploaded = ftp_list_xml_files ($ftp_server,$ftp_user_name,$ftp_user_pass,$ftp_dir,$mode,$v)) {

echo "FILE SENT";

}

else
{

echo "ERROR";

}


function ftp_list_xml_files ($ftp_server,$ftp_user_name,$ftp_user_pass,$ftp_dir,$mode,$file) {

$conn_id = ftp_connect($ftp_server); 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

if ((!$conn_id) || (!$login_result)) { 
        echo "FTP connection has failed!<br>";
        echo "Attempted to connect to $ftp_server for user $ftp_user_name<br>"; 
        exit; 
    } else {
        #echo "Connected to $ftp_server, for user $ftp_user_name";
    }

switch ($mode) {
    case "list_xml_files":
        $contents = array();
        ftp_chdir($conn_id, $ftp_dir); // Change Directory
        // get .xml files in the current directory
        $contents = ftp_nlist($conn_id, "*.xml");
        /////////////////////////////////////////////////////////////// What if there's no files to process?
        if (count($contents) > 0) {
            // output $contents
            // print_r($contents);
            // exit;
            return $contents;
        } else {
            return FALSE;
        }           
        break;
case "ftp_to_warehouse":
        // upload the file
        $source_file = 'tracking_number_xmls/pending/' . $file;

        ftp_chdir($conn_id, $ftp_dir); // Change Directory
        $destination_file = $file;

        $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_TEXT); // FTP_BINARY

        // check upload status
        if (!$upload) { 
            echo "FTP upload has failed!<br>";
            return FALSE;
        } else {
            echo "Uploaded $source_file to $ftp_server as $destination_file<br>";
            return TRUE;
        }
        break;

default:
        echo "Nothing Done<br>";
}

// close the FTP stream 
ftp_close($conn_id);
} // end function
$ftp\u server=server\u IP;
$ftp\u user\u name=ftp\u user;
$ftp\u user\u pass=ftp\u pass;
$ftp_dir=“public_html/inbound/”;
$mode=“列出xml文件”;
$file=”“;
如果($file\u list=ftp\u list\u xml\u files($ftp\u server、$ftp\u user\u name、$ftp\u user\u pass、$ftp\u dir、$mode、$file)){
$ftp_server=仓库_server;
$ftp\u user\u name=仓库\u ftp\u用户;
$ftp\用户\通行证=仓库\ ftp\通行证;
$ftp\u dir=文件目录;
$mode=“ftp_至_仓库”;
foreach($v文件列表){
如果($file\u upload=ftp\u list\u xml\u files($ftp\u server、$ftp\u user\u name、$ftp\u user\u pass、$ftp\u dir、$mode、$v)){
回显“已发送文件”;
}
其他的
{
回声“错误”;
}
函数ftp\u list\u xml\u files($ftp\u server、$ftp\u user\u name、$ftp\u user\u pass、$ftp\u dir、$mode、$file){
$conn\u id=ftp\u connect($ftp\u server);
$login\u result=ftp\u login($conn\u id,$ftp\u user\u name,$ftp\u user\u pass);
如果(!$conn_id)| |(!$login_result)){
echo“FTP连接失败!
”; echo“试图为用户$ftp\u用户名连接到$ftp\u服务器
”; 出口 }否则{ #echo“连接到$ftp\u服务器,用于用户$ftp\u用户名”; } 交换机($模式){ 案例“列表xml文件”: $contents=array(); ftp_chdir($conn_id,$ftp_dir);//更改目录 //获取当前目录中的.xml文件 $contents=ftp\u nlist($conn\u id,*.xml”); ///////////////////////////////////////////////////////////////如果没有要处理的文件怎么办? 如果(计数($contents)>0){ //输出$contents //打印(内容); //退出; 返回$contents; }否则{ 返回FALSE; } 打破 案例“ftp到仓库”: //上传文件 $source_file='tracking_number_xmls/pending/'。$file; ftp_chdir($conn_id,$ftp_dir);//更改目录 $destination_file=$file; $upload=ftp\u put($conn\u id,$destination\u file,$source\u file,ftp\u TEXT);//ftp\u二进制文件 //检查上传状态 如果(!$upload){ echo“FTP上传失败!
”; 返回FALSE; }否则{ echo“将$source_文件作为$destination_文件上载到$ftp_服务器
”; 返回TRUE; } 打破 违约: 回应“什么也没做”
; } //关闭FTP流 ftp_关闭($conn_id); }//结束函数
Try我已经尝试过了,但它总是给出错误,文件找不到…记住使用指向您正在处理的目录的完整服务器路径。服务器路径与“ftp路径”不同。好的,那么如果我有服务器ip,即“123.456.789.1”,并且文件位于公共html/文件夹中,那么它的完整路径是什么?