Dans cet article, je vais vous montrer comment basculer entre vos versions PHP depuis votre terminal sans le rouvrir ni utiliser l'option "afficher les paramètres système avancés".
Allez sur https://cmder.app, téléchargez et extrayez le zip cmder là où cela vous convient, puis consultez ces articles Comment cmder m'a rendu la vie plus facile - partie I et partie II où vous pouvez trouver des détails sur la façon d'installer cmder et configurez vos propres alias.
Nous aurons besoin à des fins de démonstration de télécharger différentes versions de php et pour ce faire, allez dans l'archive PHP, et téléchargez les versions que vous souhaitez, puis extrayez-les dans un dossier spécifique ("C:php-archive" par exemple ).
Une fois que vous avez terminé, ouvrez « afficher les paramètres système avancés » et créez de nouvelles variables pour vos différentes versions de PHP (voir l'image ci-dessous).
Ensuite, vous ajouterez une variable supplémentaire dont vous porterez le nom "current_php". Par exemple, cette variable contiendra votre version actuelle de php chaque fois que vous la modifierez, puis la référencerez dans la variable path (voir image ci-dessous).
Maintenant que nous avons tout configuré dans les paramètres système avancés, nous allons aller sur chocolatey.org et installer chocolatey, qui vous permettra de mettre à jour les variables d'environnement.
Ouvrez Powershell avec les droits d'administrateur et suivez simplement les instructions pour l'installer correctement, lorsque vous avez terminé, tapez choco ou choco -v dans le terminal pour voir si vous l'avez installé avec succès et quelle version vous avez.
Tout d'abord, démarrez votre terminal avec les droits d'administrateur (sinon les étapes suivantes ne fonctionneront pas !!), pour changer de version de php, vous devez taper setx current_php [your_target_php_location] /m où [your_target_php_location] est le chemin absolu vers le version de php que vous voulez ou utilisez l'une de vos versions de php que vous avez définie ici comme ceci setx current_php %php7% /m, maintenant vous avez basculé php vers la version 7.0 dans le chemin environnement, mais votre terminal ne sait pas que, pour recharger les mises à jour, vous avez besoin d'une autre commande qui est RefreshEnv.cmd, alias rafraîchissement, celle-ci est livrée avec chocolatey, consultez ce Update-SessionEnvironment.
La dernière étape consiste à créer un alias utile pour rendre le processus encore plus facile, créez un alias comme celui-ci : setphp=setx current_php %$1% /m $t rafraîchirenv maintenant nous pouvons prendre l'exemple précédent ( setx current_php %php7% / m ) et faites cela setphp php7, php7 remplacera la variable $1 à l'intérieur en utilisant l'alias qui sera équivalent à setx current_php %php7% /m $t rafraîchir, puis vérifiez avec php --version.
Dans la 4ème étape, nous avons parlé de démarrer votre terminal avec des droits d'administrateur, mais bien sûr, vous ne vous souviendrez pas de le faire à chaque fois, donc pour résoudre ce problème, nous aurons besoin de quelque chose en plus.
# Parameters: param( [string]$variableName, [string]$variableValue ) # Check if running as administrator If (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { # Relaunch as administrator with hidden window $arguments = "-ExecutionPolicy Bypass -File `"$PSCommandPath`" -variableName `"$variableName`" -variableValue `"$variableValue`"" Start-Process powershell -ArgumentList $arguments -Verb RunAs -WindowStyle Hidden exit } if ($variableName -and $variableValue) { $variableValueContent = [System.Environment]::GetEnvironmentVariable($variableValue, [System.EnvironmentVariableTarget]::Machine) if ($variableValueContent) { [System.Environment]::SetEnvironmentVariable($variableName, $variableValueContent, [System.EnvironmentVariableTarget]::Machine) } else { [System.Environment]::SetEnvironmentVariable($variableName, $variableValue, [System.EnvironmentVariableTarget]::Machine) } Write-Host "Environment variable '$variableName' set to '$variableValue' at the system level." } else { Write-Host "Please provide both a variable name and value." }
Enregistrez ce script PowerShell quelque part sous le nom set-env.ps1 et dirigez-vous vers votre terminal cmder, créez un alias comme celui-ci setvar=powershell -ExecutionPolicy Bypass -File "/your/path/to/set-env.ps1" $1 $2 && rafraîchir, cet alias obtiendra 2 paramètres et les transmettra au script PowerShell, le paramètre $1 contiendra le nom de la variable d'environnement et $2 contiendra la valeur de la variable d'environnement, suivie de la commande chocolatey pour tout actualiser pour votre terminal, le script vérifie ensuite les "privilèges administratifs" pour exécuter la commande setx avec les droits d'administrateur.
Puisque nous avons parlé précédemment d'une variable "current_php", nous allons l'utiliser pour l'exemple, pour utiliser notre nouvel alias setvar pour changer la version de php même si nous n'avons pas démarré cmder avec les droits d'administrateur, on tape setvar current_php php7, ou si vous aimez utiliser le chemin absolu, tapez setvar current_php your/target/php/location.
Le problème que j'ai trouvé après avoir changé de version de PHP, c'est que le mot-clé alias et toutes les commandes Linux prises en charge ne fonctionnent plus sur cmder, et la solution que j'ai trouvée jusqu'à présent est d'ajouter "C:Cmdervendorgit-for-windowsusrbin" et "C:Cmdervendorbin" à la variable d'environnement path.
Bien sûr, vous pouvez faire quelque chose comme ça, créez un alias php8 pour /your/path/to/php8/php.exe et exécutez votre code php simplement en tapant php8 my-script.php mais quand il s'agit de quelque chose comme composer ou tout ce qui repose sur votre variable path, alors vous aurez besoin de quelque chose de plus persistant, d'où cet article.
Encore une chose, comme vous l'avez probablement conclu, vous pouvez utiliser la commande setx et chocolatey pour mettre à jour n'importe quelle variable d'environnement que vous aimez.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!