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

具备入门编程能力如何用PHP在局域网内实现SCP文件传输

适合新手的局域网PHP跨设备文件传输方案

方案1:直接调用系统已验证的scp命令(零扩展安装成本)

你已经确认可以在命令行执行scp,PHP可以通过exec()/shell_exec()函数直接调用你熟悉的scp命令,不需要掌握ssh扩展的复杂用法,只需要提前配置好设备间的ssh免密登录,避免命令行交互输入密码即可。

  • 配置免密登录(仅需操作一次):在PHP运行的设备上执行ssh-keygen生成密钥,然后执行ssh-copy-id 目标设备用户名@192.168.1.xxx把公钥传到目标设备,后续scp就不需要输入密码了。
  • 下载文件示例代码:
<?php
// 从目标设备下载文件到本地路径
$remote_path = '用户名@192.168.1.100:/home/xxx/target.txt';
$local_path = '/var/www/local_save.txt';
// 加-q参数静默执行,避免输出无关日志
$command = "scp -q {$remote_path} {$local_path}";
// 执行命令,返回执行结果状态
exec($command, $output, $return_var);
if ($return_var === 0) {
    echo "文件下载成功";
} else {
    echo "文件下载失败,错误码:{$return_var}";
}
?>
  • 上传文件示例代码:
<?php
$local_path = '/var/www/upload_file.txt';
$remote_path = '用户名@192.168.1.100:/home/xxx/save_path/';
$command = "scp -q {$local_path} {$remote_path}";
exec($command, $output, $return_var);
if ($return_var === 0) {
    echo "文件上传成功";
} else {
    echo "文件上传失败,错误码:{$return_var}";
}
?>

注意:如果PHP运行环境禁用了exec等系统函数,需要先在php.ini中把这些函数从disable_functions列表里移除。

方案2:HTTP协议传输(完全不需要ssh相关操作)

如果不想配置ssh相关内容,可以直接在被访问的局域网设备上部署一个极简的HTTP服务,通过HTTP的GET/POST请求实现文件上传下载,逻辑更直观,完全贴合PHP原生能力。

  • 下载文件逻辑:目标设备上放一个可访问的PHP接口,直接输出对应文件的内容,本地PHP通过file_get_contents()或者curl请求对应接口拿到文件内容保存即可,示例:
    目标设备(192.168.1.100)上部署download.php:
    <?php
    // 简单的权限校验,避免非局域网访问
    if (substr($_SERVER['REMOTE_ADDR'], 0, 11) !== '192.168.1.') {
        die('非法访问');
    }
    $file_path = './target_file.txt';
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file_path).'"');
    readfile($file_path);
    ?>
    
    本地PHP请求下载:
    <?php
    $file_content = file_get_contents('http://192.168.1.100/download.php');
    file_put_contents('./local_save.txt', $file_content);
    echo "下载完成";
    ?>
    
  • 上传文件逻辑:目标设备部署接收上传的PHP接口,本地PHP通过curl发起文件上传请求即可,逻辑和普通Web表单上传完全一致。

方案3:SMB共享挂载(适合Windows设备为主的局域网)

如果局域网设备是Windows系统,或者已经开了SMB文件共享,可以直接把目标设备的共享目录挂载到PHP运行的设备上,PHP直接读写挂载后的目录就和操作本地文件完全一致,不需要额外写网络请求代码。


内容的提问来源于stack exchange,提问作者thebugbear

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:15:05