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