我的知识库是,我可以得到周围的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