【发布时间】: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() 作为模块以及给我上面的致命错误时它不显示。