PHP 5.4.7 Compiling ext php_printer


PHP 5.4.7 Compiling ext php_printer

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

我从使用php 5.3的XAMPP 1.7.3升级到1.8.1,其中包括:Apache 2.4.3MySQL 5.5.27PHP 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() 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

我已经找了几个小时,试图找到一个预编译的php_printer.dll for PHP 5.4.7,但无济于事。我得出的结论是,我必须从PECL中的源文件编译它。pecl.php.net/package/printer

我做了任何互联网用户都应该做的事情。我在谷歌上搜索了一下,发现了一些信息: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 ' x86 ' php5.4 - 201303311430 ' ext '打印机

我确保下载两个库: 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»四月2013 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,这是我所希望的结果。

Release_TS'ext文件夹中有一个名为Printer的文件夹。它包含以下文件: printer.objprinter.sbrvc90.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 Startup: Invalid library(可能不是PHP库)'php_printer.dll'在第0行出现未知


我必须抓取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文件夹中,并执行上述所有过程和:

配置共享——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/

这是PHP 5.4.7到5.4.11版本的错误

如果您可以使用xampp 1.6.8版本,它将解决这些问题。它有PHP 5.2.6和php_printer.dll文件保存在PHP文件夹的ext文件夹中。所以你只需要取消注释php.ini文件中的extension=php_printer.dll行,该行在php信息页面的"已加载配置文件"部分的路径中注意到。你可以从oldapps.com

找到xampp的版本