You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取PHP中ftp_raw执行LIST -al的文件列表并写入文件/输出控制台?

解决PHP获取FTP LIST命令文件列表的问题

问题原因

ftp_raw() 仅返回FTP控制连接的状态响应,而LIST -al的文件列表数据是通过独立的数据连接传输的,所以你只拿到了“开始传输数据”的150状态码,无法获取实际的文件列表内容。

解决方案

方法1:使用PHP封装好的列表函数(推荐)

直接用ftp_rawlist()函数,它会自动处理数据连接,返回完整的详细文件列表(和ls -al输出格式一致):

// 获取当前目录的详细文件列表
$fileList = ftp_rawlist($ftpConn, '.');

// 输出到控制台
print_r($fileList);

// 写入到本地文件
if ($fileList) {
    file_put_contents('ftp_file_list.txt', implode("\n", $fileList));
}

如果只需要纯文件名列表,可改用ftp_nlist($ftpConn, '.')。

方法2:手动处理数据连接(适合特殊场景)

如果一定要用ftp_raw()配合LIST命令,需要手动处理数据连接的传输:

// 切换到被动模式(大部分FTP服务器要求)
ftp_pasv($ftpConn, true);

// 发送LIST命令触发数据传输
ftp_raw($ftpConn, 'LIST -al');

// 打开本地文件用于写入
$localHandle = fopen('ftp_list.txt', 'w');
if ($localHandle) {
    // 从数据连接获取列表内容并写入文件
    ftp_fget($ftpConn, $localHandle, '-al', FTP_BINARY);
    fclose($localHandle);
    
    // 读取文件内容输出到控制台
    echo file_get_contents('ftp_list.txt');
}

内容的提问来源于stack exchange,提问作者Faye D.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 18:30:17