PHP 5.4.7 Compilando o php_printer ext

Minha base de conhecimento é, eu posso contornar em php. Eu nunca trabalhei com C, C ++, C # ou qualquer compilador.

Eu fiz o upgrade do XAMPP 1.7.3, que usava o php 5.3 para 1.8.1, que inclui: Apache 2.4.3 MySQL 5.5.27 PHP 5.4.7

Ele está sendo instalado no Windows 7 Pro, no Windows XP Pro e no Windows Server 2008 r2. Mas estou tentando fazer com que ele funcione no Windows 7 atualmente.

Eu atualizei porque precisava de uma versão mais recente do Apache e do MySQL por motivos de segurança. Eu não tenho a opção de fazer downgrade.

Eu uso o php_printer.dll para a capacidade de imprimir dados brutos para a impressora:

printer_set_option($handle, PRINTER_MODE, "RAW");

Meu Código funcionou bem no PHP 5.3, mas quebrou no PHP 5.4.

Depois de receber o erro: "Erro fatal: Chame a função indefinida printer_open () em ~". Eu verifiquei o php_error_log e recebi as informações a seguir.

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

Eu olhei por horas tentando encontrar um php_printer.dll pré-compilado para o PHP 5.4.7 sem sucesso. Concluí que precisarei compilá-lo a partir dos arquivos de origem no PECL. pecl.php.net/package/printer

Nunca tive que fazer isso antes de fazer o que qualquer internauta deveria fazer. Eu pesquisei e encontrei algumas informações aqui:https://wiki.php.net/internals/windows/stepbystepbuild

Demorei o dia todo, mas a compilação do PHP funcionou. Mas então tentei criar o php_printer.dll Primeiro eu tentei:

svn co http://svn.php.net/repository/pecl/printer/trunk pecl/printer

Mas ele disse: 'svn' não é reconhecido como um comando interno ou externo, programa operável ou arquivo de lote.

Então eu acabei de baixar os arquivos de:svn.php.net/repository/pecl/printer/trunk/ e colocá-los em:C: \ php-sdk \ php54dev \ vc9 \ x86 \ php5.4-201303311430 \ ext \ printer

Certifiquei-me de baixar as bibliotecas de:windows.php.net/downloads/php-sdk/deps/vc9/x86/ Também apenas o:deps-5.4-vc9-x86.7z

Eu tentei um então o outro, entretanto; cada vez que recebi o seguinte quando tentei 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

ATUALIZAR

Eu tenho ajuda em outro fórum.

por hackattack142 »03. Abril 2013 23:51

Olá,

Abra 'printer.c' e substitua todas as ocorrências de 'pval' por 'zval' e compile.

Obrigado Hackattack, um passo mais perto, espero,

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

Parecia ter compilado. Contudo; Eu não consigo encontrar um printer.dll ou php_printer.dll que é o resultado que eu estava esperando.

NoRelease_TS \ ext pasta existe uma pasta chamadaImpressora. Ele contém os seguintes arquivos:printer.obj printer.sbr vc90.idb

Eu também fiz o último passo:

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>

Ajuda de outro fórum

configure --disable-all --enable-cli --enable-printer=shared

Ele funcionou e eu criei o php_printer.dll no entanto, quando eu tentei usá-lo:

No Registro de Erros do PHP: [15-Apr-2013 15:34:53 UTC] PHP Aviso: Inicialização do PHP: Biblioteca inválida (talvez não uma biblioteca PHP) 'php_printer.dll' em Desconhecido na linha 0

Eu tive que pegar arquivos 5.4.7 como eu estava usando 5.4.15 mas o XAMPP 1.8.1 usa 5.4.7

http://www.oldapps.com/php_programming_language.php?old_php=8227

E coloque em: C: \ php-sdk \ php54dev \ vc9 \ x86 \ php-5.4.7

em seguida, coloque os arquivos da impressora na pasta ext e faça todos os processos acima e:

configure --enable-printer = shared

E funcionou:

PHP versão 5.4.7 php_printer.dll

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

questionAnswers(3)

yourAnswerToTheQuestion