2013-04-02 2 views
37

Моя база знаний - я могу обойти 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

+2

Вы не имеете опыта работы с C, и вы хотите скомпилировать PHP-модуль - это большая задача. У вас нет опыта работы с C, и вы хотите начать компиляцию материалов в MS-Windows? Это почти смешно. Скорее всего, быстрее переписать код для генерации PDF, а затем распечатать его через ghostscript. – symcbean

+0

Yup! Ну, проблема в том, что принтеры, которые мы используем, имеют свой собственный язык. Поэтому я должен отправить печать им в их коде, а не в формате PDF. – dBaker

+0

Кроме того, я надеялся, что все, что мне нужно сделать, это собрать уже построенный код C, который был доступен через PECL. – dBaker

ответ

1

Это ошибка в версиях с 5.4.7 по 5.4.11 PHP.

0

Если вы можете использовать версию xampp 1.6.8, она исправит эти проблемы. он имеет php 5.2.6, а также файл php_printer.dll сохранен в папке ext в папке php. поэтому вам нужно будет только не комментировать расширение строки = php_printer.dll в файле php.ini, которое было отмечено в пути в разделе «Загруженный файл конфигурации» на странице с информацией о php. вы можете найти эту версию xamppfrom oldapps.com

Смежные вопросы