PHP 8.4.0 Beta 5 available for testing

PHP en ligne de commande sur Microsoft Windows

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

Note:

Vous devriez 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 votre version de PHP et vos préférences d'affichage) à la variable d'environnement PATH. Lisez plus sur comment ajouter votre répertoire PHP à 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 vous placez le .PHP 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 votre 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 votre chemin "C:\PHP Scripts" est dans la variable d'environment PATH :
script -arg1 -arg2 -arg3

Note:

Il y a un petit problème si vous avez l'intention d'utiliser cette technique et d'utiliser vos 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
Vous pourriez trouver que le script se bloque simplement et rien n'est affiché. Pour que cela fonctionne, vous devez faire un autre changement de registre.
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.

add a note

User Contributed Notes 3 notes

up
3
pimroes at gmail dot com
13 years ago
Make sure your run CMD.exe as an administrator, otherwise you'll get an "access denied" when you run the commands.
up
2
rudigerw at hotmail dot com
8 years ago
On Windows 10 starting php by only typing the script name in an elevated command prompt pops up a dialog to choose an app.
It turns out Windows does that when the program associated with phpfiles through ftype cannot be executed. In this case this happens because it is trying to run php.exe in non-admin mode, even when launched from an elevated command prompt. To fix this, locate your php.exe, right-click, "Properties", "Compatibility", under Settings check "Run this program as an administrator; then also click "Change settings for all users".
up
-1
vechenjivot at gmail dot com
8 years ago
On Windows 10, the above registry entries didn't work for me. In order for them to work, you need to write to
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.php\UserChoice
for which you don't have access, even if you run regedit as admin (probably because of the Hash key).
The solution is actually much easier - right-click a PHP file in Explorer and associate it to always open with php.exe.
And then you need to modify the PATH variable:
setx PATH "%PATH%;c:\path\to\php" /M
if you want to execute files with commands like
php file.php
To Top