38

我的知识库是,我可以使用 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

http://pylonx.com/PHP/php_printer_5.4.7.zip

4

3 回答 3

2

下载并安装您喜欢的任何版本的 php,并在此处安装适当的 php 打印机 dll:http: //windows.php.net/downloads/pecl/snaps/printer/0.1.0-dev/

于 2014-06-24T09:16:38.417 回答
1

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

于 2013-08-09T02:01:10.917 回答
0

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

于 2014-05-18T11:44:54.533 回答