この記事では、ターミナルを再度開いたり、「システムの詳細設定の表示」を使用したりせずに、ターミナルから PHP のバージョンを切り替える方法を説明します。
https://cmder.app に移動し、都合のよい場所で cmder zip をダウンロードして解凍します。次に、この投稿をチェックアウトしてください。cmder で生活が楽になった方法 - パート I とパート II では、cmder のインストール方法の詳細を確認できます。独自のエイリアスを設定します。
デモの目的で、さまざまなバージョンの php をダウンロードする必要があります。そのためには、PHP アーカイブに移動し、必要なバージョンをダウンロードして、特定のフォルダー (たとえば、「C:php-archive」) に抽出します。 ).
完了したら、「システムの詳細設定の表示」を開き、さまざまな PHP バージョンに合わせて新しい変数を作成します (下の画像を参照)。
次に、「current_php」という名前の変数をもう 1 つ追加します。たとえば、この変数は、現在の php バージョンを変更するたびに保持し、パス変数内で参照します (下の画像を参照)。
高度なシステム設定内のすべての設定が完了したので、chocolatey.org に移動して Chocolatey をインストールします。これにより、環境変数を更新できるようになります。
管理者権限で Powershell を開き、指示に従って正しい方法でインストールします。完了したら、ターミナルに choco または choco -v と入力して、正常にインストールされたかどうか、およびどのバージョンを使用しているかを確認します。
まず、管理者権限でターミナルを起動します (そうしないと次のステップが機能しません!!)。php バージョンを切り替えるには、setx current_php [your_target_php_location] /m と入力する必要があります。ここで、[your_target_php_location] は、必要な php バージョン、またはここで定義した php バージョンの 1 つを使用します。 setx current_php %php7% /m で、php を version に切り替えました。パス環境には 7.0 が含まれていますが、端末は、更新をリロードするには、別のコマンド RefreshEnv.cmd (別名 refreshenv) が必要であることを知りません。これには Chocolatey が付属しており、この Update-SessionEnvironment.
をチェックアウトしてください。最後のステップは、プロセスをさらに簡単にするために役立つエイリアスを作成することです。次のようなエイリアスを作成します: setphp=setx current_php %$1% /m $t freshenv ここで、前の例を取り上げます ( setx current_php %php7% / m ) でこれを setphp php7 に実行すると、php7 は setx current_php %php7% /m $t と同等のエイリアスを使用して内部の $1 変数を置き換えます。 refreshenv を実行し、php --version.
で確認します。4 番目のステップでは、管理者権限で端末を起動することについて説明しましたが、もちろん、毎回それを行うことを覚えているわけではないため、この問題を解決するには追加のものが必要になります。
# 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." }
この PowerShell スクリプトを set-env.ps1 という名前のどこかに保存し、cmder ターミナルに移動し、次のようなエイリアスを作成します。 setvar=powershell -ExecutionPolicy Bypass -File "/your/path/to/set-env.ps1" $1 $2 && freshenv、このエイリアスは 2 つのパラメータを取得して PowerShell スクリプトに渡します。パラメータ $1 は環境変数名を保持し、$2 は環境変数名を保持します。環境変数の値を保持した後、chocolatey コマンドを実行して端末のすべてを更新します。その後、スクリプトは「管理者権限」をチェックして、管理者権限で setx コマンドを実行します。
以前に「current_php」変数について説明したため、これを例として使用します。管理者権限で cmder を起動していない場合でも、新しいエイリアス setvar を使用して PHP バージョンを変更するには、「setvar current_php」と入力します。 php7、または絶対パスを使用したい場合は setvar current_php your/target/php/location.
と入力します。PHP のバージョンを切り替えた後に見つかった問題は、alias キーワードとサポートされているすべての Linux コマンドが cmder で機能しなくなったことです。これに対する解決策は、これまでのところ「C:Cmdervendorgit-for-windowsusrbin」を追加することです。および「C:Cmdervendorbin」をパス環境変数に追加します。
もちろん、次のようなこともできます。/your/path/to/php8/php.exe のエイリアス php8 を作成し、php8 my-script.php と入力するだけで php コードを実行できますが、次のような場合は、コンポーザーやパス変数に依存するものであれば、より永続的なものが必要になるため、この記事を参照してください。
もう 1 つ、おそらく結論付けられているように、setx コマンドと Chocolatey を使用して任意の環境変数を更新できます。
以上が1つのコマンドでWindowsのphpバージョンを切り替えるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。