2013-04-02 6 views
37

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

+2

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

+0

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

+0

Inoltre, speravo che tutto ciò che avrei dovuto fare fosse compilare il codice C già costruito che era disponibile tramite il PECL. – dBaker

risposta

1

È un bug nelle versioni dalla 5.4.7 alla 5.4.11 di PHP.

0

Se è possibile utilizzare la versione 1.6.8 di xampp, risolverà questi problemi. ha php 5.2.6 e anche il file php_printer.dll è stato salvato nella cartella ext nella cartella php. quindi dovrai solo annullare il commento all'estensione di riga = php_printer.dll nel file php.ini che si è notato nel percorso nella sezione "File di configurazione caricato" nella pagina di informazioni su php. si può trovare che la versione di xamppfrom oldapps.com