我正在实现打印发票的功能,因为我使用了 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.");
}
由于问题引用了一段非常熟悉的代码,我假设你指的是mike42/escpos-php。
如果是这样,您将需要选择一个适合您的平台(Windows,Mac,Linux)和接口(USB,串行,Samba共享,CUPS)的PrintConnector
。初始化驱动程序的正确方法将特定于系统。
自述文件中会显示一个受支持的组合表,其中包含指向示例代码段的链接。
例如,如果您在 Linux 上有 USB 打印机,它可能显示为 /dev/usb/lp0
.假设您的权限配置为允许 Web 服务器用户访问该文件,则发送基本收据的链接在 Linux/USB 下的自述文件中链接:
<?php
require __DIR__ . '/vendor/autoload.php';
use Mike42EscposPrintConnectorsFilePrintConnector;
use Mike42EscposPrinter;
$connector = new FilePrintConnector("/dev/usb/lp0");
$printer = new Printer($connector);
$printer -> text("Hello World!n");
$printer -> cut();
$printer -> close();
旁白:您引用的代码片段不再在代码中,而是在命令行上并且没有指定打印连接器时可以回退php:///stdout
的旧功能。