我的知识库是,我可以在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/repository/pecl/printer/trunk / 并把它们放入: 的 C:\ PHP-SDK \ php54dev \ VC9 \ 86 \ php5.4-201303311430 \分机\打印机
我确保从以下位置下载这些库: 的 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
更新
我在另一个论坛上得到了一些帮助。
by hackattack142»03. April 2013 23:51
您好,
打开'printer.c'并用'zval'替换'pval'的所有实例,它应该编译。
谢谢Hackafack,我希望,更近一步,
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 printer.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库)第0行的未知中的'php_printer.dll'
我必须抓住5.4.7文件,因为我使用5.4.15但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文件夹中并完成上述所有过程并执行:
configure --enable-printer = shared
它有效:
PHP版本5.4.7 php_printer.dll
答案 0 :(得分:2)
下载并安装您喜欢的任何版本的php并在此处安装相应的php打印机dll:http://windows.php.net/downloads/pecl/snaps/printer/0.1.0-dev/
答案 1 :(得分:1)
这是PHP 5.4.7至5.4.11版本中的一个错误。
答案 2 :(得分:0)
如果您可以使用xampp 1.6.8版本,它将解决这些问题。它有php 5.2.6并且php_printer.dll文件已保存在php文件夹中的ext文件夹中。所以你只需要取消注释php.ini文件中的行extension = php_printer.dll,该文件在" Loaded Configuration File"关于php信息页面的部分。 你可以从oldapps.com找到xampp的那个版本