-1

我正在实现打印发票的功能,因为我使用了 Escpos 模块,但是当我运行它时没有响应。

如果我打印 php_sapi_name 我得到的是“apache2handler”而不是“cli”,我有 linux 系统。我不知道如何在我的网络服务器中获取“cli”。

你能分享你的想法来解决这个问题吗

if(php_sapi_name() == 'cli') {// i got apache2handler
    $connector = new FilePrintConnector("php://stdout");
} else {
 throw new InvalidArgumentException("Argument passed to Escpos::__construct() must implement interface PrintConnector, null given.");
  }
4

1 回答 1

0

由于问题引用了一段看起来非常熟悉的代码,我假设您指的是mike42/escpos-php

如果是这样,您将需要选择PrintConnector适用于您的平台(Windows、Mac、Linux)和接口(USB、串行、Samba 共享、CUPS)的。初始化驱动程序的正确方法是系统特定的。

README文件中显示了受支持的组合表以及指向示例片段的链接。

例如,如果您在 Linux 上有 USB 打印机,它可能会显示为/dev/usb/lp0. 假设您的权限配置为允许网络服务器用户访问该文件,发送基本收据的链接在 Linux/USB 下的 README 中:

<?php
require __DIR__ . '/vendor/autoload.php';
use Mike42\Escpos\PrintConnectors\FilePrintConnector;
use Mike42\Escpos\Printer;
$connector = new FilePrintConnector("/dev/usb/lp0");
$printer = new Printer($connector);
$printer -> text("Hello World!\n");
$printer -> cut();
$printer -> close();

旁白:您引用的代码段不再在代码中,但是php:///stdout如果您在命令行上并且没有指定打印连接器,则可以使用旧功能。

于 2016-05-04T13:33:39.880 回答