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