PHP 5.4.7 compilando ext php_printer
Mi base de conocimientos es, puedo moverse en php. Nunca trabajé con C, C ++, C # ni ningún compilador.
Actualicé de XAMPP 1.7.3, que usaba php 5.3, a 1.8.1 que incluye: Apache 2.4.3 MySQL 5.5.27 PHP 5.4.7
Se está instalando en Windows 7 Pro, Windows XP Pro y Windows Server 2008 r2. Pero estoy intentando que funcione en Windows 7 actualmente.
Actualicé porque necesitaba una versión más nueva de Apache y MySQL por razones de seguridad. No tengo la opción de bajar de categoría.
Utilizo el archivo php_printer.dll para imprimir datos sin procesar en la impresora:
printer_set_option($handle, PRINTER_MODE, "RAW");
Mi código funcionó bien en PHP 5.3 pero se rompió en PHP 5.4.
Después de recibir el error: "Error grave: llame a la función indefinida printer_open () en ~". Revisé el php_error_log y recibí la siguiente información.
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
He buscado durante horas tratando de encontrar un php_printer.dll precompilado para PHP 5.4.7 en vano. Llegué a la conclusión de que tendré que compilarlo a partir de archivos de origen en el PECL. pecl.php.net/package/printer
Nunca tuve que hacer esto antes de hacer lo que cualquier usuario de Internet debería hacer. Lo busqué en Google y encontré algo de información aquí:https://wiki.php.net/internals/windows/stepbystepbuild
Me tomó todo el día pero la compilación de PHP funcionó. Pero luego intenté crear el php_printer.dll Primero intenté:
svn co http://svn.php.net/repository/pecl/printer/trunk pecl/printer
Pero decía: 'svn' no se reconoce como un comando interno o externo, un programa operable o un archivo por lotes.
Así que acabo de descargar los archivos de:svn.php.net/repository/pecl/printer/trunk/ y ponerlos enC: \ php-sdk \ php54dev \ vc9 \ x86 \ php5.4-201303311430 \ ext \ printer
Me aseguré de descargar las bibliotecas tanto de:windows.php.net/downloads/php-sdk/deps/vc9/x86/ También solo el:deps-5.4-vc9-x86.7z
Sin embargo, intenté uno después del otro; Cada vez que recibía lo siguiente cuando intentaba hacer Nake:
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
ACTUALIZAR
Conseguí ayuda en otro foro.
por hackattack142 »03. Abril 2013 23:51
Hola,
Abra 'printer.c' y reemplace todas las instancias de 'pval' con 'zval' y debería compilarse.
Gracias Hackattack, un paso más cerca 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
Parecía haberse compilado. Sin embargo; No puedo encontrar una printer.dll o una php_printer.dll, que es el resultado que esperaba.
En elRelease_TS \ ext carpeta hay una carpeta llamadaImpresora. Contiene los siguientes archivos:printer.obj printer.sbr vc90.idb
También hice el último paso:
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>
Ayuda de otro foro
configure --disable-all --enable-cli --enable-printer=shared
Funcionó y creé el php_printer.dll sin embargo, cuando intenté usarlo:
En el registro de errores de PHP: [15-Apr-2013 15:34:53 UTC] Advertencia de PHP: Inicio de PHP: biblioteca no válida (quizás no una biblioteca de PHP) 'php_printer.dll' en Desconocido en la línea 0
Tuve que agarrar archivos 5.4.7 ya que estaba usando 5.4.15 pero XAMPP 1.8.1 usa 5.4.7
http://www.oldapps.com/php_programming_language.php?old_php=8227
Y póngalo en: C: \ php-sdk \ php54dev \ vc9 \ x86 \ php-5.4.7
Luego, coloque los archivos de la impresora en la carpeta ext e hizo todos los procesos anteriores y:
configurar --enable-printer = shared
Y funcionó:
PHP versión 5.4.7 php_printer.dll