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.
To Top