我正在尝试使用PHP打印到服务器端打印机。我发现了类似的示例代码,它们大多使用相同的API函数来完成这项任务。当我在服务器上运行它来测试代码时,它说"PHP致命错误:调用未定义的函数printer_open()"。因此,我为这个打印机函数找到了至少三个不同版本的php_printer.DLL的,并分别尝试了它们。我做了更多的研究,查看了apache服务器错误日志,发现了以下警告
PHP警告:PHP启动:无法加载动态库"ext''PHP_printer.dll"-找不到指定的模块。''''r''n在未知的第0行
从中发现了一些Bing搜索结果,这些结果表明,当apache启动时,它没有加载的原因是因为它依赖于其他库。如果这是真的,我还不能找到这些是哪个库DLL,以及在哪里可以得到它们。这就是我需要帮助的地方,首先基本上知道它是否不依赖,然后为什么会抛出PHP警告,或者我需要什么库。
感谢的帮助
zac
我正在运行wampserver2.2
Apache 2.4.2
PHP 5.4.3
操作系统:windows 7 64位
添加到php.ini文件
extension=php_printer.dll
php日志中没有错误
此外,每次更改php.ini文件或在*ext*目录中放入新DLL时,我都会重新启动服务器我甚至把wamp DLL的"…''ext''"的路径放在窗口的环境变量中,就像在黑暗中拍摄一样。
示例代码
<?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符合不同的visualstudioc++版本,因此需要重新编译。它给出了大部分我仍在努力使其工作的步骤
https://community.apachefriends.org/f/viewtopic.php?t=53348&p=204590
Php错误:
[18-Mar-2015 22:55:56 UTC]PHP警告:PHP启动:打印机:无法初始化模块使用模块API编译的模块=20121212 PHP
使用模块API编译=20100525这些选项需要在中匹配第0行未知
如果您还找不到解决方案。。。。
首先在phpinfo()
中检查您使用的wmap服务器版本是否启用了线程安全。只有phpinfo()
中的ctrl+F
表示"线程安全"。
可能在您使用的版本中启用了线程安全。然后你必须下载php_printer.dll
的ts(线程安全)版本,你可以在这里找到。。。。
http://windows.php.net/downloads/pecl/snaps/printer/0.1.0-dev/
根据您的系统需求(操作系统和其他系统)下载特定文件,并将其复制到wamp的扩展目录中。然后只需在php.ini
文件中启用扩展名,如
extension=php_printer.dll
如果已经不存在,只需在ini文件中添加这一行,一开始就不会有;
。
希望它能帮助。。。