PHP-Befehlszeile unter Microsoft Windows

Dieser Abschnitt enthält Hinweise und Tipps, wie man PHP unter Windows auf der Befehlszeile zum Laufen bringt.

Hinweis:

Vorher sollten Sie die Anleitung für die manuelle Installation gelesen haben!

PHP kann ohne Änderungen an Windows von der Kommandozeile aus gestartet werden.

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

Mit ein paar kleinen Maßnahmen lässt sich dies jedoch vereinfachen. Einige dieser Maßnahmen sollten bereits durchgeführt worden sein, werden aber hier wiederholt, um eine vollständige Schritt-für-Schritt-Anleitung zu geben.

    Hinweis:

    Sowohl PATH als auch PATHEXT sind wichtige, bereits existierende Windows-Systemvariablen, und es sollte darauf geachtet werden, keine der beiden Variablen zu überschreiben, sondern sie nur zu ergänzen.

  • Ergänzen Sie die Umgebungsvariable PATH um den Ort der ausführbaren PHP-Datei (php.exe, php-win.exe oder php-cli.exe, abhängig von Ihrer PHP-Version und den Einstellungen für die Anzeige). Wie Sie Ihr PHP-Verzeichnis zu PATH hinzufügen können, erfahren Sie im entsprechenden FAQ-Eintrag.

  • Ergänzen Sie die Umgebungsvariable PATHEXT um die Erweiterung .PHP. Dies kann zusammen mit der Änderung der Umgebungsvariablen PATH erledigt werden. Befolgen Sie die in den FAQ beschriebenen Schritte, aber ändern Sie die Umgebungsvariable PATHEXT und nicht die Umgebungsvariable PATH.

    Hinweis:

    Die Position, an der Sie das .PHP platzieren, bestimmt, welches Skript oder Programm ausgeführt wird, wenn es übereinstimmende Dateinamen gibt. Wenn Sie .PHP zum Beispiel vor .BAT platzieren, wird bei einer gleichnamigen Batch-Datei Ihr Skript ausgeführt und nicht die Batch-Datei.

  • Verknüpfen Sie die Erweiterung .PHP mit einem Dateityp. Dazu führen Sie den folgenden Befehl aus:

    assoc .php=phpfile
    

  • Verknüpfen Sie den Dateityp phpfile mit der entsprechenden ausführbaren PHP-Datei. Dazu führen Sie den folgenden Befehl aus:

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

Wenn Sie diese Schritte befolgen, können PHP-Skripte von jedem Verzeichnis aus ausgeführt werden, ohne dass Sie die ausführbare PHP-Datei oder die Erweiterung .PHP eingeben müssen. Darüber hinaus können Sie Parameter angeben, die an das Skript übergeben werden.

Im folgenden Beispiel sind einige der Änderungen in der Registry aufgeführt, die manuell vorgenommen werden können.

Beispiel #1 Änderungen in der Registry

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"

Mit diesen Änderungen kann derselbe Befehl wie folgt geschrieben werden:

"C:\PHP Scripts\script" -arg1 -arg2 -arg3
oder, wenn der Pfad "C:\PHP Scripts" in der Umgebungsvariablen PATH steht:
script -arg1 -arg2 -arg3

Hinweis:

Wenn Sie diese Technik anwenden und Ihre PHP-Skripte als Befehlszeilenfilter verwenden wollen, wie im folgenden Beispiel, gibt es ein kleines Problem:

dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3
oder
dir | script -arg1 -arg2 -arg3
Es kann vorkommen, dass das Skript einfach hängen bleibt und nichts ausgibt. Um dies zu beheben, müssen Sie eine weitere Änderung in der Registry vornehmen.
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"InheritConsoleHandles"=dword:00000001
Weitere Informationen zu diesem Problem finden Sie im » Microsoft Knowledgebase Article : 321788. Ab Windows 10 scheint diese Einstellung geändert worden zu sein, sodass die Standardinstallation von Windows 10 geerbte Konsolen-Handles automatisch unterstützt. Dieser » Microsoft-Forenbeitrag liefert die Erklärung.

add a note

User Contributed Notes 4 notes

up
4
vechenjivot at gmail dot com
6 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
up
3
elhadjouattara at gmail dot thrcom
7 years ago
On Windows 8, with php 5.6.8 win32 VC11 in command line, need to indicate path with / rather than backslash \
Hence C:\Users\toshiba\Documents\php\test.php shall be C:/Users/toshiba/Documents/php/test.php
up
3
pimroes at gmail dot com
11 years ago
Make sure your run CMD.exe as an administrator, otherwise you'll get an "access denied" when you run the commands.
up
0
rudigerw at hotmail dot com
6 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".
To Top