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