38 votes

PHP 5.4.7 Compilation ext php_printer

Ma base de connaissances est que je peux me débrouiller en php. Je n'ai jamais travaillé avec C, C++, C# ou tout autre compilateur.

J'ai fait la mise à jour de XAMPP 1.7.3, qui utilisait php 5.3, à 1.8.1 qui inclut : Apache 2.4.3 MySQL 5.5.27 PHP 5.4.7

Il est installé sur Windows 7 Pro, Windows XP Pro et Windows Server 2008 r2. Mais j'essaie de le faire fonctionner sur Windows 7 actuellement.

J'ai effectué une mise à niveau parce que j'avais besoin d'une version plus récente d'Apache et de MySQL pour des raisons de sécurité. Je n'ai pas la possibilité de rétrograder.

J'utilise la dll php_printer.dll pour la possibilité d'imprimer des données brutes sur l'imprimante :

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

Mon code fonctionnait bien en PHP 5.3 mais ne fonctionnait plus en PHP 5.4.

Après avoir reçu l'erreur : " Fatal error : Appel à une fonction non définie printer_open() dans ~". J'ai vérifié le php_error_log et j'ai reçu les informations suivantes.

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

J'ai cherché pendant des heures à trouver une dll php_printer.dll précompilée pour PHP 5.4.7, sans succès. J'en ai conclu que je devrai la compiler à partir des fichiers sources dans le PECL. pecl.php.net/package/printer

N'ayant jamais eu à le faire auparavant, j'ai fait ce que tout internaute devrait faire. Je l'ai cherché sur Google et j'ai trouvé des informations ici : https://wiki.php.net/internals/Windows/stepbystepbuild

Cela m'a pris toute la journée mais la construction PHP a fonctionné. Mais ensuite j'ai essayé de créer la dll php_printer.dll. J'ai d'abord essayé :

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

Mais il a dit : 'svn' n'est pas reconnu comme une commande interne ou externe, un programme exploitable ou un fichier batch.

Donc j'ai juste téléchargé les fichiers moi-même depuis : svn.php.net/repository/pecl/printer/trunk/ et les mettre dedans : C:\php -sdk \php54dev\vc9\x86\php5.4 -201303311430 \ext\printer

Je me suis assuré de télécharger les bibliothèques des deux : Windows.php.net/downloads/php-sdk/deps/vc9/x86/ Aussi juste le : deps-5.4-vc9-x86.7z

J'ai essayé l'un puis l'autre, mais à chaque fois, j'ai reçu le message suivant lorsque j'ai essayé de faire un 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

J'ai reçu de l'aide sur un autre forum.


par hackattack142 " 03. Avril 2013 23:51

Bonjour,

Ouvrez 'printer.c' et remplacez toutes les occurrences de 'pval' par 'zval' et cela devrait compiler.


Merci Hackattack, un pas de plus j'espère,

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

Il semble avoir été compilé. Cependant, je ne trouve pas de printer.dll ou de php_printer.dll, ce qui est le résultat que j'espérais.

En el Communiqué_TS \ext il y a un dossier nommé Imprimante . Il contient les fichiers suivants : imprimante.obj printer.sbr vc90.idb

J'ai aussi fait la dernière étape :

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>

Aide d'un autre forum

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

Cela a fonctionné et j'ai créé la dll php_printer.dll mais lorsque j'ai essayé de l'utiliser :

Dans le journal des erreurs PHP : [15-Apr-2013 15:34:53 UTC] Avertissement PHP : PHP Startup : Bibliothèque non valide (peut-être pas une bibliothèque PHP) 'php_printer.dll' dans Unknown sur la ligne 0.


J'ai dû récupérer les fichiers 5.4.7 car j'utilisais la 5.4.15 mais XAMPP 1.8.1 utilise la 5.4.7.

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

Et mettez-le dedans : C:\php -sdk \php54dev\vc9\x86\php -5.4.7

puis j'ai placé les fichiers de l'imprimante dans le dossier ext et j'ai effectué toutes les opérations ci-dessus :

configure --enable-printer=shared

Et ça a marché :

PHP Version 5.4.7 php_printer.dll

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

2voto

Hope Ogbons Points 1

Téléchargez et installez la version de php que vous souhaitez et installez la dll appropriée pour l'imprimante php ici : http://Windows.php.net/downloads/pecl/snaps/printer/0.1.0-dev/

1voto

leo wong Points 26

C'est un bogue dans les versions 5.4.7 à 5.4.11 de PHP.

0voto

Si vous pouvez utiliser la version 1.6.8 de xampp, elle résoudra ces problèmes. Elle dispose de php 5.2.6 et le fichier php_printer.dll a été sauvegardé dans le dossier ext du dossier php. Vous n'aurez donc qu'à décommenter la ligne extension=php_printer.dll dans le fichier php.ini qui a été noté dans le chemin sous la section "Loaded Configuration File" sur la page d'information de php. vous pouvez trouver cette version de xamppfrom oldapps.com

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X