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

AWS上Laravel+Nginx服务打印到本地Windows打印机报错排查

问题诊断与修复方案

核心问题:连接目标IP搞反了

你代码里用WindowsPrintConnector("POS-80C")时,默认会尝试连接AWS服务器自身的共享打印机,但你的打印机在本地Windows机器上,错误日志里的//ip-172-31-43-229/POS-80C就是AWS服务器的IP,这完全是连接目标错了。

具体修复步骤

  1. 修正打印机连接地址
    把WindowsPrintConnector的参数改成本地Windows机器的可访问IP+共享打印机名,格式为//本地WindowsIP/POS-80C,示例代码:

    try {
        // 替换成你本地Windows机器的实际IP
        $connector = new \Mike42\Escpos\PrintConnectors\WindowsPrintConnector("//192.168.1.100/POS-80C");
    
        $printer = new \Mike42\Escpos\Printer($connector);
        $printer->text("Hello World!\n");
        $printer->cut();
        $printer->close();
    } catch (Exception $e) {
        echo "打印失败: " . $e->getMessage() . "\n";
    }
    

    注意:如果本地Windows在私有内网,得确保AWS服务器能访问到这个IP——要么通过VPN打通内网,要么给本地机器做端口映射开放SMB端口,或者用本地机器的公网IP。

  2. 手动测试SMB连通性
    在AWS服务器上执行下面的命令(替换成本地Windows的IP),先确认通路是否正常:

    smbclient '//本地WindowsIP/POS-80C' -c 'print -' -N -m SMB2
    

    如果还是报错,按以下方向排查:

    • 本地Windows防火墙:开放139、445端口,允许AWS服务器的IP访问。
    • 打印机共享权限:如果用了-N(匿名连接),得确保共享打印机允许匿名用户打印;或者在代码里指定Windows的用户名和密码:
      $connector = new \Mike42\Escpos\PrintConnectors\WindowsPrintConnector(
          "//本地WindowsIP/POS-80C",
          "你的Windows用户名",
          "你的Windows密码"
      );
      
    • SMB版本兼容:部分Windows机器禁用了SMB2,可尝试把命令里的-m SMB2改成-m SMB3。
  3. 检查AWS安全组配置
    确认AWS服务器的安全组允许出站访问139、445端口,如果这些端口被封禁,也会出现连接拒绝的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:37:05