我的知识库是,我可以使用php。我从未使用过C,C++,C#或任何编译器。

我从使用PHP 5.3的XAMPP 1.7.3升级到1.8.1,其中包括:
Apache 2.4.3
MySQL 5.5.27
PHP 5.4.7

它已安装在Windows 7 Pro,Windows XP Pro和Windows Server 2008 r2上。但我正在尝试使其目前在Windows 7上运行。

我升级是因为出于安全原因需要较新版本的Apache和MySQL。我没有降级的选择。

我使用php_printer.dll来将原始数据打印到打印机:

printer_set_option($handle, PRINTER_MODE, "RAW");

我的代码在PHP 5.3中运行良好,但在PHP 5.4中损坏。

收到错误后:“致命错误:在〜中调用未定义的函数printer_open()。”我检查了php_error_log并收到了以下信息。
PHP Warning: PHP Startup: printer: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20100525
These options need to match

我已经找了好几个小时试图找到PHP 5.4.7的预编译php_printer.dll没有用。我得出的结论是,我将不得不从PECL中的源文件中对其进行编译。 pecl.php.net/package/printer

在我做任何互联网用户应该做的事情之前,从未做过此事。我在Google上搜索了一下,并在这里找到了一些信息:
https://wiki.php.net/internals/windows/stepbystepbuild

我花了整整一整天,但PHP构建起作用了。但随后尝试创建php_printer.dll
首先我尝试了:
svn co http://svn.php.net/repository/pecl/printer/trunk pecl/printer

但它说:
无法将“svn”识别为内部或外部命令,可操作程序或批处理文件。

所以我只是从以下位置下载文件:
svn.php.net/存储库/ pecl / printer / trunk /
并将它们放在:
C:\ php-sdk \ php54dev \ vc9 \ x86 \ php5.4-201303311430 \ ext \ printer

我确保从以下两个站点下载库:
windows.php.net/downloads/php-sdk/deps/vc9/x86/
也只是:
deps-5.4-vc9-x86.7z

但是,我尝试了另一个。每当我尝试进行nmake时收到以下消息:
c:\php-sdk\php54dev\vc9\x86\php5.4-201303311430>nmake

Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

printer.c
ext\printer\printer.c(266) : error C2065: 'pval' : undeclared identifier

更新

我在另一个论坛上得到了一些帮助。

发布者:hackattack142»2013年4月3日23:51

你好,

打开'printer.c'并将'pval'的所有实例替换为'zval',它应该可以编译。

谢谢Hackattack,我希望再近一步,
c:\php-sdk\php54dev\vc9\x86\php5.4-201303311430>buildconf
~
c:\php-sdk\php54dev\vc9\x86\php5.4-201303311430>configure --disable-all --enable-cli
--enable-printer
~
c:\php-sdk\php54dev\vc9\x86\php5.4-201303311430>nmake

Microsoft (R) Program Maintenance Utility Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.

internal_functions.c
printer.c
   Creating library Release_TS\php5ts.lib and object Release_TS\php5ts.exp
   Creating library Release_TS\php.lib and object Release_TS\php.exp
SAPI sapi\cli build complete

它似乎已编译。然而;我找不到我想要的结果printer.dll或php_printer.dll。

Release_TS \ ext 文件夹中,有一个名为打印机的文件夹。它包含以下文件:
printer.obj
打印机.sbr
vc90.idb


我也做了最后一步:
c:\php-sdk\php54dev\vc9\x86\php5.4-201303311430>cd Release_TS
c:\php-sdk\php54dev\vc9\x86\php5.4-201303311430\Release_TS>php -m
[PHP Modules]
Core
date
ereg
pcre
printer
Reflection
SPL
standard
[Zend Modules]
c:\php-sdk\php54dev\vc9\x86\php5.4-201303311430\Release_TS>

来自另一个论坛的帮助
configure --disable-all --enable-cli --enable-printer=shared

它起作用了,但是当我尝试使用它时,我创建了php_printer.dll:

在PHP错误日志中:
[2013年4月15日15:34:53 UTC] PHP警告:PHP启动:无效的库(可能不是PHP库)“php_printer.dll”位于第0行的“未知”中

我必须在使用5.4.15时抓取5.4.7文件,但XAMPP 1.8.1使用5.4.7

http://www.oldapps.com/php_programming_language.php?old_php=8227

并将其放在:C:\ php-sdk \ php54dev \ vc9 \ x86 \ php-5.4.7

然后将打印机文件放在ext文件夹中,并执行上述所有过程,并:

配置--enable-printer =共享

,它起作用了:

PHP版本5.4.7 php_printer.dll

http://pylonx.com/PHP/php_printer_5.4.7.zip

最佳答案

下载并安装您喜欢的任何版本的php,然后在此处安装相应的php打印机dll:http://windows.php.net/downloads/pecl/snaps/printer/0.1.0-dev/

07-24 09:46
查看更多