## Exécution de PHP en ligne de commande sur les systèmes Windows

Cette section contient des notes et des astuces spécifiques à l'exécution de PHP en ligne de commande sur Windows.

> Note:

> Lire les étapes d'installation manuelle en premier !

Avoir PHP qui s'exécute à partir de la ligne de commande peut être effectué sans apporter de modifications à Windows.

    C:\php\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3

Mais il y a quelques étapes faciles à suivre pour simplifier cela. Certaines de ces étapes auraient déjà dû être prises, mais sont répétées ici pour pouvoir fournir une séquence étape par étape complète.

> Note:

> Les deux variables système pré-existantes PATH et PATHEXT sont importantes dans Windows, et il faut faire attention à ne pas les écraser, seulement les ajouter.

- Ajoutez l'emplacement de l'exécutable PHP (php.exe, php-win.exe ou php-cli.exe selon la version de PHP et les préférences d'affichage) à la variable d'environnement PATH. Lisez plus sur comment ajouter le répertoire PHP approprié à la variable d'environnement PATH dans la entrée FAQ correspondante.

- Ajoutez l'extension `.PHP` à la variable d'environnement PATHEXT. Ceci peut être fait en même temps que l'ajout de la variable d'environnement PATH. Suivez les mêmes étapes que décrites dans la FAQ mais modifiez la variable d'environnement PATHEXT plutôt que la variable d'environnement PATH.

  > Note:

  > La position dans laquelle le `.PHP` est placé déterminera quel script ou programme est exécuté lorsqu'il y a des noms de fichiers correspondants. Par exemple, placer `.PHP` avant `.BAT` fera exécuter le script, plutôt que le fichier batch, s'il y a un fichier batch avec le même nom.

- Associez l'extension `.PHP` avec un type de fichier. Ceci est fait en exécutant la commande suivante :

      assoc .php=phpfile

- Associez le type de fichier `phpfile` avec l'exécutable PHP approprié. Ceci est fait en exécutant la commande suivante :

      ftype phpfile="C:\php\php.exe" -f "%1" -- %~2

En suivant ces étapes, les scripts PHP pourront être exécutés depuis n'importe quel répertoire sans avoir besoin de taper l'exécutable PHP ou l'extension `.PHP` et tous les paramètres seront fournis au script pour traitement.

L'exemple si dessous détaille certains des changements de registre qui peuvent être faits manuellement.

Exemple #1 Changements de registre

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.php]
    @="phpfile"
    "Content Type"="application/php"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile]
    @="PHP Script"
    "EditFlags"=dword:00000000
    "BrowserFlags"=dword:00000008
    "AlwaysShowExt"=""

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\DefaultIcon]
    @="C:\\php\\php-win.exe,0"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell]
    @="Open"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open]
    @="&Open"

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\phpfile\shell\Open\command]
    @="\"C:\\php\\php.exe\" -f \"%1\" -- %~2"

Avec ces changements, la même commande peut être écrite comme suit :

    "C:\PHP Scripts\script" -arg1 -arg2 -arg3

ou, si le chemin `"C:\PHP Scripts"` est dans la variable d'environment PATH :

    script -arg1 -arg2 -arg3

> Note:

> Il y a un petit problème si l'intention d'utiliser cette technique et d'utiliser les scripts PHP comme filtre en ligne de commande, comme l'exemple ci-dessous :

>     dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3

> ou

>     dir | script -arg1 -arg2 -arg3

> Le script peut simplement se bloquer et rien ne s'affiche. Pour que cela fonctionne, un autre changement de registre doit être effectué :

>     Windows Registry Editor Version 5.00

>     [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
>     "InheritConsoleHandles"=dword:00000001

> Plus d'informations sur ce problème peuvent être trouvées dans cet » article de la base de connaissances Microsoft : 321788. À partir de Windows 10, ce paramètre semble être inversé, rendant l'installation par défaut de Windows 10 supportant automatiquement les poignées de console héritées. Ce » post du forum Microsoft fournit l'explication.