La mia base di conoscenza è che posso andare in giro in PHP. Non ho mai lavorato con C, C++, C# o qualsiasi compilatore.PHP 5.4.7 Compilazione di ext php_printer
ho aggiornato da XAMPP 1.7.3, che ha usato PHP 5.3, a 1.8.1 che include: Apache 2.4.3 MySQL 5.5.27 PHP 5.4.7
Viene installato su Windows 7 Pro, Windows XP Pro e Windows Server 2008 r2. Ma sto cercando di farlo funzionare su Windows 7 al momento.
Ho eseguito l'aggiornamento perché avevo bisogno di una versione più recente di Apache e MySQL per motivi di sicurezza. Non ho la possibilità di effettuare il downgrade.
Io uso il php_printer.dll per la possibilità di stampare i dati grezzi alla stampante:
printer_set_option($handle, PRINTER_MODE, "RAW");
mio codice ha funzionato bene in PHP 5.3, ma ha rotto in PHP 5.4.
Dopo aver ricevuto l'errore: "Errore irreversibile: chiamata alla funzione non definita printer_open() in ~". Ho controllato il php_error_log e ho ricevuto le seguenti informazioni.
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
Ho cercato per ore cercando di trovare un php_printer.dll pre-compilato per PHP 5.4.7 senza alcun risultato. Ho concluso che dovrò compilarlo dai file sorgente nel PECL. pecl.php.net/package/printer
Non ho mai dovuto farlo prima di fare ciò che qualsiasi utente di Internet dovrebbe fare. Ho cercato su Google e trovato alcune informazioni qui: https://wiki.php.net/internals/windows/stepbystepbuild
Mi ci è voluto tutto il giorno ma la build di PHP ha funzionato. Ma poi cercato di creare il php_printer.dll prima cosa ho provato:
svn co http://svn.php.net/repository/pecl/printer/trunk pecl/printer
Ma ha detto: 'svn' non è riconosciuto come comando interno o esterno, un programma eseguibile o un file batch.
Così ho appena scaricato i file da me stesso: svn.php.net/repository/pecl/printer/trunk/ e metterli in: C: \ php-sdk \ php54dev \ VC9 \ x86 \ php5.4-201303311430 ext \ printer \
ho fatto in modo di scaricare le librerie sia dal: windows.php.net/downloads/php-sdk/deps/vc9/x86/ anche solo il : deps-5.4-vc9-x86.7z
Ho provato uno poi l'altro, tuttavia; ogni volta che ho ricevuto la seguente quando ho cercato di 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
UPDATE
ho avuto qualche aiuto su un altro forum.
da hackattack142 »03. aprile 2013 23:51
Ciao,
Open 'printer.c' e sostituire tutte le istanze di 'pval' con 'zval' e dovrebbe compilare.
Grazie Hackattack, un passo più vicini spero,
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
sembrava avere compilato. Però; Non riesco a trovare un printer.dll o un php_printer.dll che è il risultato che speravo.
Negli Release_TS cartella ext \ c'è una cartella denominata stampante. Esso contiene i seguenti file: printer.obj printer.sbr vc90.idb
ho anche fatto l'ultimo 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>
Aiuto da un altro forum
configure --disable-all --enable-cli --enable-printer=shared
Ha funzionato e ho creato il php_printer.dll tuttavia quando ho provato ad usarlo:
In PHP Registro errori: [15-Apr-2013 15:34:53 GMT] PHP Warning: PHP Startup: libreria non valido (forse non una libreria PHP) 'php_printer.dll' in Unknown on line 0
ho dovuto prendere 5.4.7 i file come stavo usando 5.4.15 ma XAMPP 1.8.1 utilizza 5.4.7
http://www.oldapps.com/php_programming_language.php?old_php=8227
e metterlo in: C: \ php-sdk \ php54dev \ vc9 \ x86 \ php-5.4.7
poi mettere il file di stampa nella cartella ext e ha fatto tutti i processi di cui sopra e:
configure --enable-stampante condivisa =
e ha funzionato:
PHP versione 5.4. 7 php_printer.dll
http://pylonx.com/PHP/php_printer_5.4.7.zip
Hai avuto alcuna esperienza con C e si vuole compilare un modulo PHP: è un compito importante. Non hai esperienza con C e vuoi iniziare a compilare materiale su MS-Windows? È quasi divertente. Sarà probabilmente più veloce riscrivere il codice per generare un PDF, quindi stamparlo tramite ghostscript. – symcbean
Sì! Bene, il problema è che le stampanti che stiamo usando hanno la loro lingua. Quindi devo inviare loro la stampa nel loro codice, non in un PDF. – dBaker
Inoltre, speravo che tutto ciò che avrei dovuto fare fosse compilare il codice C già costruito che era disponibile tramite il PECL. – dBaker