PHP 5.4.7编译ext PHP_打印机

PHP 5.4.7编译ext PHP_打印机,php,dll,printing,compilation,Php,Dll,Printing,Compilation,我的知识基础是,我可以用php四处走动。我从来没有用C、C++、C或任何编译器工作过。 我从使用PHP5.3的XAMPP1.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上。但我目前正试图让它在Windows7上运行 我升级是因为出于安全考虑,我需要更新版本的Apache和MySQL。我没有降级的选择 我使用php_print

我的知识基础是,我可以用php四处走动。我从来没有用C、C++、C或任何编译器工作过。 我从使用PHP5.3的XAMPP1.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上。但我目前正试图让它在Windows7上运行

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

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

printer_set_option($handle, PRINTER_MODE, "RAW");
我的代码在PHP5.3中运行良好,但在PHP5.4中出现问题

收到错误后:“致命错误:调用~”中未定义的函数printer_open()。我检查了php错误日志并收到了以下信息

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
我已经找了好几个小时,试图找到一个针对PHP5.4.7的预编译php_printer.dll,但毫无结果。我已经得出结论,我将不得不从PECL中的源文件编译它。pecl.php.net/package/printer

在我做任何一个互联网用户都应该做的事情之前,我从来没有这样做过。我在谷歌上搜索了一下,在这里找到了一些信息:

我花了一整天的时间,但是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\x86\php5.4-201303311430\ext\printer

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

然而,我一个接一个地试了;每次我尝试制作时收到以下信息:

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

更新

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


黑客攻击142»03。2013年4月23:51

你好,

打开“printer.c”并将“pval”的所有实例替换为“zval”,它应该编译


谢谢你,我希望离你更近一步

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,这是我所希望的结果

发布\u 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错误日志中: [15-Apr-2013 15:34:53 UTC]PHP警告:PHP启动:无效库(可能不是PHP库)'PHP_printer.dll'位于第0行的未知位置


在使用5.4.15时,我必须获取5.4.7文件,但XAMPP1.8.1使用5.4.7

并将其放入:C:\PHPSDK\php54dev\vc9\x86\php-5.4.7

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

配置--启用打印机=共享

它成功了:

PHP版本5.4.7 PHP_printer.dll


这是PHP版本5.4.7到5.4.11中的一个bug。

如果您可以使用XAMPP1.6.8版本,它将修复这些问题。它有PHP5.2.6,并且php_printer.dll文件保存在php文件夹的ext文件夹中。因此,您只需取消对php.ini文件中的行extension=php_printer.dll的注释,该行在php信息页面“Loaded Configuration file”部分下的路径中注意到。
您可以在oldapps.com上找到该版本的xamppfrom

下载并安装您喜欢的任何版本的php,并在此处安装相应的php打印机dll:

您没有使用C的经验,想要编译php模块-这是一项艰巨的任务。你没有使用C语言的经验,你想开始在微软Windows上编译东西吗?那几乎很有趣。重写代码生成PDF然后通过ghostscript打印可能会更快。是的!问题是我们使用的打印机有自己的语言。因此,我必须以他们的代码(而不是PDF)向他们发送打印文件。此外,我希望我所需要做的就是编译已经构建的C代码,该代码可通过PECL获得。我希望您可以共享您的newst php_printer.dll fir PHP5.4:D@dBaker如果你解决了你的问题,把你的解决方案作为答案。是的,你可以回答自己的问题并接受它;)