我的知识库是,我可以使用 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() 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 5.4.7 找到预编译的 php_printer.dll 无济于事。我已经得出结论,我必须从 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\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
更新
我在另一个论坛上得到了一些帮助。
作者 hackattack142 » 2013 年 4 月 3 日 23:51
你好,
打开“printer.c”并将“pval”的所有实例替换为“zval”,它应该可以编译。
谢谢 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
它似乎已经编译。然而; 我找不到打印机.dll 或 php_printer.dll,这是我希望的结果。
在Release_TS\ext文件夹中有一个名为Printer的文件夹。它包含以下文件: 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 文件,但 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=shared
它奏效了:
PHP 版本 5.4.7 php_printer.dll