PHP从不同的服务器下载文件


php download file from different server

我的应用程序位于服务器 A 上,数据库位于其他服务器服务器 B 上。使用 mysql 输出文件到服务器 B 的/tmp 目录中。我想在服务器 A 上使用 php 代码下载此文件

<?php
     $fullpath = '/tmp/users.csv';
     Mysql SELECT ......INTO OUTFILE '$fullpath'
     FIELDS TERMINATED BY ','
     ENCLOSED BY ''"'
     ESCAPED BY ''"'
     LINES TERMINATED BY ''n'
     $connection = ssh2_connect('serverb', 22);
     ssh2_auth_password($connection, 'username', 'password');
     if(ssh2_scp_recv($connection, $fullpath, $fullpath)) {
        echo $filepath.' copied to server!!';
     }
    $filename1 = 'users.csv';
    $mm_type="application/csv"; 
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header('Content-Type: application/csv; charset=UTF-8');
    header('Content-Disposition: attachment; filename="'.$filename1.'"');
    header("Content-Transfer-Encoding: binary'n");
    readfile($fullpath);
    exit;
?>

mysql 选择输出文件保存在服务器 B 中,但无法从运行 PHP 代码的服务器 A 下载问候

您也可以尝试"fputcsv"功能以CSV格式下载数据。您可以像在应用程序中一样连接数据库

$filename = 'users.csv';
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename='.$filename.'.csv');
ob_clean();
$output = fopen('php://output', 'w');
fputcsv($output, array('Column1', 'Column2'));
$exceldata = $this->ModelName->query("SELECT field1, field2 from TableName");
// loop over the rows, outputting them
foreach($exceldata as $exceldataval){
 fputcsv($output, $exceldataval);
}
fclose($output);
exit;

您还可以使用 SCP 命令将文件从服务器 A 移动到服务器 B

SCP destination_server_username@IP地址:/路径/文件名.zip usource_server_username@IP:/路径/文件.zip