【问题标题】:PHP to print to a server side printerPHP打印到服务器端打印机
【发布时间】:2015-02-24 00:01:15
【问题描述】:

我正在尝试使用 PHP 打印到服务器端打印机。我发现了类似的示例代码,它们大部分都使用相同的 API 函数来完成这项任务。当我在我的服务器上运行它来测试代码时,它说“PHP 致命错误:调用未定义的函数printer_open()”。所以我为这个打印机功能找到了至少三个不同版本的 php_printer.DLL 的,并分别尝试了它们。我做了更多研究并查看 apache 服务器错误日志发现了这个警告

PHP 警告:PHP 启动:无法加载动态库 'ext\php_printer.dll' - 找不到指定的模块。\r\n 在第 0 行的未知中

从中找到一些Bing 搜索结果,说apache 启动时没有加载的原因是因为它依赖于其他库。如果这是真的,我还不能找到这些库 DLL 以及从哪里获得它们。这是我首先需要帮助才能知道它是否不依赖然后为什么抛出 PHP 警告或我需要什么库。

感谢您的帮助

扎克

我正在运行 wampserver2.2

Apache 2.4.2

PHP 5.4.3

操作系统:Windows 7 64 位

添加到 php.ini 文件中

extension=php_printer.dll

php 日志中没有错误

每次更改 php.ini 文件或将新 DLL 放入 *ext* 目录时,我都会重新启动服务器 我什至将 wamp DLL 的“...\ext\”的路径放在 windows 的环境变量中,作为暗中的一枪。

示例代码

<?php
/* get the sample text */
$lipsum = "test print";//file_get_contents('lipsum.txt');
phpinfo();

/* open a connection to the printer */
$printer = printer_open("Microsoft XPS Document Writer");

/* write the text to the print job */
printer_write($printer, $lipsum);

/* close the connection */
printer_close($printer);
?>

2015 年 3 月 19 日已编辑

我发现了这个站点以及来自 php 错误日志的稍微不同的错误消息。 基本上下面的链接说发生错误是因为 PHP_printer.dll 符合不同的 Visual Studio C++ 版本,因此需要重新编译。它给出了我仍在努力让它工作的大部分步骤

https://community.apachefriends.org/f/viewtopic.php?t=53348&p=204590

php 错误:

[2015 年 3 月 18 日 22:55:56 UTC] PHP 警告:PHP 启动:打印机:无法 初始化使用模块 API=20121212 PHP 编译的模块模块
使用模块 API=20100525 编译这些选项需要在 第0行未知

【问题讨论】:

  • 您可以使用dependency walker 查找缺少的dll
  • 谢谢 cchacholiades 和 Lashane 我一直在研究你的建议,如果这个兔子洞引导我,我会告诉你们。
  • @Lashane 当我使用依赖遍历器查找任何丢失的 DLL 时,它发现了很多。因为我在网上找到了 php_printer.dll 文件没有的那些。除了几个我能找到64位的地方。我暂时把它们都放在了 php_printer.dll 文件所在的 EXT\ 目录中。现在,依赖walker 不再显示php_printer.dll 所需的dll。但是我放置了这么多,我需要使用dependency walker程序来检查每个新的dll以确保它们正常。
  • 这个过程越来越乏味,我什至不确定这是否能解决问题。当我在浏览器中运行它时,我仍然收到 bold Fatal error: Call to undefined function printer_open() in C:\... \printTest.php bold 错误。我也从 apache 日志文件中得到了一些错误,但值得注意的是,它不再说我无法加载动态库 php_printer.dll 。但即使看起来我加载了 php_printer.dll,但为什么在使用 phpinfo() 作为模块以及给我上面的致命错误时它不显示。

标签: php apache dll printing


【解决方案1】:

如果您还没有找到解决方案....

首先检查phpinfo() 在您使用的wmap 服务器版本中是否启用了线程安全。只需 ctrl+Fphpinfo() 中用于“线程安全”。

您使用的版本中可能启用了线程安全。然后你必须下载php_printer.dll的ts(线程安全)版本,你可以在这里找到它......

http://windows.php.net/downloads/pecl/snaps/printer/0.1.0-dev/

根据您的系统要求(操作系统和其他)下载特定文件并将其复制到 wamp 的扩展目录中。然后只需在php.ini 文件中启用扩展,如

extension=php_printer.dll

如果 ini 文件中没有这一行,则只需在 ini 文件中添加此行,开头不会有;

希望对你有帮助……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 2011-11-06
    • 2012-06-25
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    相关资源
    最近更新 更多