PHP 5.4.7编译ext php_printer

我的知识基础是,我可以在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出于安全原因。 我没有select降级。

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

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

我的代码在PHP 5.3中工作正常,但在PHP 5.4中打破。

收到错误后:“致命错误:调用未定义的函数printer_open()in〜”。 我检查了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 

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

在我做任何互联网用户应该做的事之前,从来没有做过这些事情。 我GOOGLE了它,发现一些信息在这里: https : //wiki.php.net/internals/windows/stepbystepbuild

我花了一整天,但PHP的构build工作。 但后来试图创buildphp_printer.dll首先我试过:

 svn co http://svn.php.net/repository/pecl/printer/trunk pecl/printer 

但它说:'svn'不被识别为内部或外部命令,可操作的程序或batch file。

所以我只是从svn.php.net/repository/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 

UPDATE

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


由hackattack142»03.四月2013 23:51

你好,

打开“printer.c”,用“zval”replace“pval”的所有实例,然后编译。


谢谢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 

它似乎已经编译。 然而; 我无法findprinter.dll或php_printer.dll,这是我期待的结果。

Release_TS \ ext文件夹中有一个名为Printer的文件夹。 它包含以下文件: 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 

它的工作,我创build了php_printer.dll然而,当我试图使用它:

在PHP错误日志:[15-Apr-2013 15:34:53 UTC] PHP的警告:PHP的启动:无效的库(也许不是一个PHP库)'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文件夹中,并执行以上所有过程并:

configuration–enable-printer = shared

它的工作原理:

PHP版本5.4.7 php_printer.dll

PHP/php_printer_5.4.7.html

下载并安装你喜欢的任何版本的PHP,并安装适当的PHP打印机DLL在这里: http : //windows.php.net/downloads/pecl/snaps/printer/0.1.0-dev/

这是PHP的5.4.7至5.4.11版本中的一个错误。

如果你可以使用xampp 1.6.8版本,它将解决这些问题。 它有PHP 5.2.6和php_printer.dll文件保存在PHP文件夹的EXT文件夹。 所以你只需要在php infoini文件的“Loaded Configuration File”部分下面的path中注意到extension extension = php_printer.dll。 你可以find版本的xamppfrom oldapps.com