PHP Conference Japan 2024

PHP auf Windows-Systemen auf der Kommandozeile ausführen

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

Hinweis:

Lesen Sie zuerst die Anleitung für die manuelle Installation!

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 der PHP-Version und den Einstellungen für die Anzeige). Wie Sie das 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 das .PHP platziert wird, 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 das 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 das Verzeichnis "C:\PHP Scripts" in der Umgebungsvariablen PATH steht:
script -arg1 -arg2 -arg3

Hinweis:

Wenn diese Technik verwendet werden soll, um PHP-Skripte als Befehlszeilenfilter zu nutzen, 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, muss eine weitere Änderung in der Registry vorgenommen werden.
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 2 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
0
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".
To Top