Archives mensuelles : février 2017

Extension PHP pour réaliser des services Windows

Aujourd’hui, je vais parler d’une extension PHP exclusivement réservée à Windows sur laquelle j’ai travaillé. Il s’agit de l’extension PECL win32service écrite à l’origine par Wez Furlong et maintenue jusqu’à maintenant par Richard Quadling. Cette extension permet d’exécuter un script PHP en tant que service windows et a été mise à jour pour PHP 7.0 et 7.1. Elle est maintenant téléchargeable depuis le dépôt de code source GitHub.

Dans la dernière version 0.2.0 actuellement en beta, quelques nouveautés ont été ajoutées par rapport à la version pour PHP5. La plus importante est la possibilité de charger l’extension quelle que soit la façon d’utiliser PHP (ligne de commande, module apache, CGI, FastCGI). Si vous souhaitez retrouver le comportement de l’extension tel qu’il était en PHP 5, il faut utiliser la version 0.1.2 également disponible pour PHP 7.0 et 7.1.

Voyons maintenant comment l’utiliser. Le Zip téléchargé depuis GitHub contient l’extension pour une version de PHP et pour toutes les variantes (x86/x64 et NTS/TS). Il contient également des scripts qui sont utilisés pour tester l’extension lors du développement.

La première chose à faire est d’installer l’extension adéquate dans le dossier « ext » de votre installation PHP.

Une fois la copie terminée, il est nécessaire de modifier le fichier de configuration « php.ini » pour que l’extension soit chargée.

extension_dir = "ext"
Vérifier que cette valeur est correcte.

Vérifions maintenant que l’extension est bien chargée avec la commande php --ri win32service

Maintenant que l’extension est chargée, il est possible d’utiliser les scripts d’exemples présents dans le zip téléchargé. Pour les utiliser, ouvrez une fenêtre de ligne de commande en tant qu’administrateur et placez-vous dans le dossier des exemples.

Maintenant, installez le service de test avec la commande php.exe service.php create

Ouvrez le gestionnaire de service windows, le service « Windows service PHP test » est maintenant présent.

Vous pouvez le démarrer, l’arrêter et le désinstaller via la ligne de commande.

Propriétés du service Windows
Le service dans le gestionnaire de service windows.
L’arrêt du service depuis la ligne de commande met à jour le gestionnaire de service Windows
La suppression du service peut se faire uniquement via la ligne de commande.

La documentation officielle présente sur le site de PHP est toujours valable.

Vous avez maintenant toutes les cartes en main pour réaliser de beaux services Windows avec PHP 7. Si un plantage intervient, il est possible de rapporter l’incident directement sur GitHub.

Utilisez-vous PHP sur Windows pour développer ou sur votre serveur Windows ?

[Modification du 8 mars 2017]

L’extension est maintenant  suffisamment stable pour être utilisé en production. La version 0.2.0 stable est disponible.