如何运行使用ftp_get命令的PHP文件下载脚本?
问题分析与解决方案
你的核心误解在于:当通过浏览器运行VPS上的PHP脚本时,ftp_get函数是将FTP服务器上的文件下载到VPS服务器的本地文件系统,而不是你的个人电脑。这也是你觉得需要和本地电脑交互的原因——你实际想要的是把文件拉到自己的机器上,而非存到VPS里。
解决方法一:修改脚本让浏览器直接下载文件到本地
如果目标是把FTP上的文件下载到你的个人电脑,不需要让VPS存储这个文件,可以修改脚本,直接将FTP文件内容输出到浏览器,触发本地下载:
<?php include 'include/helper.php'; // connect to FTP server and login $ftp_server = $server_address; $ftp_username = $user; $ftp_userpass = $pass; $ftp_conn = ftp_connect($ftp_server) or die ('Could not connect to FTP server'); $login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass); $server_file = 'invenfeed_5264.csv'; // 从FTP获取文件内容并直接输出到浏览器 $file_content = ftp_get($ftp_conn, 'php://output', $server_file, FTP_BINARY); if ($file_content) { // 设置HTTP响应头,触发浏览器下载 header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="invenfeed_5264.csv"'); header('Content-Length: ' . ftp_size($ftp_conn, $server_file)); } else { die("Error downloading file from FTP server"); } // Close the FTP connection ftp_close($ftp_conn); ?>
当你在浏览器访问这个修改后的脚本时,浏览器会直接将FTP上的文件下载到你的个人电脑,无需经过VPS存储。
解决方法二:在本地运行脚本(PowerShell/ISE)
如果你想在本地用PowerShell执行这个PHP脚本,需要先完成以下步骤:
- 在你的个人电脑上安装PHP环境,确保
php命令能在PowerShell中直接调用(需将PHP路径添加到系统环境变量) - 将原脚本和
include/helper.php复制到本地电脑的某个文件夹 - 确保
helper.php里的$server_address、$user、$pass变量配置正确 - 打开PowerShell,切换到脚本所在的文件夹,执行命令:
php .\你的脚本文件名.php
执行后,文件会下载到你当前PowerShell所在的目录下(也就是脚本同级的local.csv)。
原脚本的问题说明
你原来的脚本在浏览器运行时,确实会把FTP文件下载到VPS服务器上的local.csv(脚本所在目录),你可以通过FTP或者VPS的文件管理器查看这个文件是否存在,验证脚本是否执行成功。
内容的提问来源于stack exchange,提问作者LuisM
相关产品推荐
相关产品推荐

