Моя база знаний - я могу обойти php. Я никогда не работал с C, C++, C# или компиляторами.PHP 5.4.7 Компиляция ext php_printer
Я Модернизированный от XAMPP 1.7.3, который используется PHP 5.3, для 1.8.1, который включает в себя: Apache 2.4.3 MySQL 5.5.27 PHP 5.4.7
Он устанавливается на Windows 7 Pro, Windows XP Pro и Windows Server 2008 r2. Но я пытаюсь заставить его работать в Windows 7 в настоящее время.
Я обновил, потому что мне нужны более новые версии Apache и MySQL по соображениям безопасности. У меня нет возможности понизить.
Я использую php_printer.dll для возможности печати необработанных данных на принтер:
printer_set_option($handle, PRINTER_MODE, "RAW");
Мой код работает отлично в PHP 5.3, но сломал в PHP 5.4.
После получения ошибки: «Неустранимая ошибка: вызов неопределенной функции printer_open() в ~". Я проверил php_error_log и получил следующую информацию.
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
Я искал в течение нескольких часов, пытаясь найти скомпилированную php_printer.dll для PHP 5.4.7 не дали никаких результатов. Я пришел к выводу, что мне придется скомпилировать его из исходных файлов в PECL. pecl.php.net/package/printer
Никогда не делал этого, прежде чем я сделал то, что должен делать любой интернет-пользователь. Я искал его и нашел здесь информацию: https://wiki.php.net/internals/windows/stepbystepbuild
Это заняло у меня весь день, но работа PHP работала. Но затем попытался создать php_printer.dll Сначала я попробовал:
svn co http://svn.php.net/repository/pecl/printer/trunk pecl/printer
Но сказал: «SVN» не распознается как внутренней или внешней командой, исполняемой программой или пакетным файлом.
Так что я просто скачал файлы себя из: svn.php.net/repository/pecl/printer/trunk/ и поместить их в: C: \ PHP-SDK \ php54dev \ VC9 \ x86 \ php5.4-201303311430 \ внутр \ принтер
Я удостоверился, чтобы загрузить библиотеки как из: windows.php.net/downloads/php-sdk/deps/vc9/x86/ Также просто : deps-5.4-vc9-x86.7z
Я пробовал один, а затем другой; каждый раз, когда я получил следующее, когда я попытался 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
я получил некоторую помощь на другом форуме.
по hackattack142 »03. апреля 2013 23:51
Здравствуйте,
Open 'printer.c' и замените все экземпляры 'ПВС' с 'Zval', и он должен собрать.
Спасибо Hackattack, один шаг ближе, я надеюсь,
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
Казалось, собрали. Однако; Я не могу найти файл printer.dll или php_printer.dll, результатом которого я надеялся.
В Release_TS \ внутр папке есть папка с именем принтера. Он содержит следующие файлы: printer.obj printer.sbr vc90.idb
Я также сделал последний шаг:
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>
Помощь из другого форума
configure --disable-all --enable-cli --enable-printer=shared
Это сработало, и я создал php_printer.dll, однако, когда я попытался использовать его:
В PHP Вход Error: [15-Apr-2013 15:34:53 UTC] PHP Warning: PHP Startup: Invalid библиотека (возможно, не PHP библиотека) 'php_printer.dll' в Unknown в строке 0
Я должен был захватить 5.4.7 файлы, как я использую 5.4.15, но XAMPP 1.8.1 использует 5.4.7
http://www.oldapps.com/php_programming_language.php?old_php=8227
И положил его в C: \ PHP-SDK \ php54dev \ vc9 \ x86 \ php-5.4.7
затем поместить файлы принтера в папке внутр и сделал все вышеуказанные процессы и:
конфигурационный --enable-принтер = общий
И это сработало:
PHP версии 5.4. 7 php_printer.dll
http://pylonx.com/PHP/php_printer_5.4.7.zip
Вы не имеете опыта работы с C, и вы хотите скомпилировать PHP-модуль - это большая задача. У вас нет опыта работы с C, и вы хотите начать компиляцию материалов в MS-Windows? Это почти смешно. Скорее всего, быстрее переписать код для генерации PDF, а затем распечатать его через ghostscript. – symcbean
Yup! Ну, проблема в том, что принтеры, которые мы используем, имеют свой собственный язык. Поэтому я должен отправить печать им в их коде, а не в формате PDF. – dBaker
Кроме того, я надеялся, что все, что мне нужно сделать, это собрать уже построенный код C, который был доступен через PECL. – dBaker