PHP 5.4.7 Kompilowanie ext php_printer

Moja baza wiedzy to, mogę się poruszać w php. Nigdy nie pracowałem z C, C ++, C # ani żadnymi kompilatorami.

Uaktualniono z XAMPP 1.7.3, który korzystał z php 5.3, do 1.8.1, który zawiera: Apache 2.4.3 MySQL 5.5.27 PHP 5.4.7

Jest instalowany na Windows 7 Pro, Windows XP Pro i Windows Server 2008 r2. Ale staram się go uruchomić na Windows 7 obecnie.

Zmodernizowałem, ponieważ potrzebowałem nowszej wersji Apache i MySQL ze względów bezpieczeństwa. Nie mam możliwości obniżenia wersji.

Używam php_printer.dll do drukowania surowych danych na drukarce:

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

Mój kod działał dobrze w PHP 5.3, ale złamał się w PHP 5.4.

Po otrzymaniu błędu: „Błąd krytyczny: wywołanie niezdefiniowanej funkcji printer_open () in ~”. Sprawdziłem php_error_log i otrzymałem następujące informacje.

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

Przez wiele godzin próbowałem znaleźć skompilowany php_printer.dll dla PHP 5.4.7 bezskutecznie. Doszedłem do wniosku, że będę musiał skompilować go z plików źródłowych w PECL. pecl.php.net/package/printer

Nigdy wcześniej tego nie robiłem, zanim zrobię to, co powinien zrobić każdy użytkownik Internetu. Wyszukałem go w Google i znalazłem tutaj kilka informacji:https://wiki.php.net/internals/windows/stepbystepbuild

Zajęło mi to cały dzień, ale kompilacja PHP działała. Ale potem próbowałem utworzyć php_printer.dll Najpierw próbowałem:

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

Ale powiedział: „svn” nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy.

Właśnie sam ściągnąłem pliki z:svn.php.net/repository/pecl/printer/trunk/ i umieść je w:C: php-sdk php54dev vc9 x86 php5.4-201303311430 ext \ t

Zadbałem o to, aby pobrać biblioteki zarówno z:windows.php.net/downloads/php-sdk/deps/vc9/x86/ Również tylko:deps-5.4-vc9-x86.7z

Próbowałem jednak jednego, potem drugiego; za każdym razem, gdy próbowałem 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

AKTUALIZACJA

Dostałem pomoc na innym forum.

autor: hackattack142 »03. Kwiecień 2013 23:51

Dzień dobry,

Otwórz 'printer.c' i zamień wszystkie wystąpienia 'pval' na 'zval' i powinno się skompilować.

Dziękuję Hackattack, krok bliżej mam nadzieję,

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

Wydawało się, że się skompilował. Jednak; Nie mogę znaleźć drukarki.dll lub php_printer.dll, na którą liczyłem.

wRelease_TS folder zawiera folder o nazwieDrukarka. Zawiera następujące pliki:printer.obj printer.sbr vc90.idb

Zrobiłem też ostatni krok:

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>

Pomoc z innego forum

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

Zadziałało i stworzyłem php_printer.dll, ale kiedy próbowałem go użyć:

W dzienniku błędów PHP: [15 kwietnia 2013 r. 15:34:53 UTC] Ostrzeżenie PHP: Uruchomienie PHP: Niepoprawna biblioteka (może nie biblioteka PHP) „php_printer.dll” w Nieznany w linii 0

Musiałem pobrać pliki 5.4.7, ponieważ korzystałem z 5.4.15, ale XAMPP 1.8.1 używa 5.4.7

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

I umieść to w: C: php-sdk php54dev vc9 86 php-5.4.7

następnie umieść pliki drukarki w folderze ext i wykonaj wszystkie powyższe procesy i:

configure --enable-printer = shared

I zadziałało:

PHP w wersji 5.4.7 php_printer.dll

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

questionAnswers(2)

yourAnswerToTheQuestion