Командний рядок PHP у Microsoft Windows

Цей розділ містить примітки та підказки, які стосуються запуску PHP з командного рядка для Windows.

Зауваження :

Спочатку слід прочитати кроки ручної установки!

Запуск PHP з командного рядка можна виконати без внесення будь-яких змін до Windows.

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

Але є кілька кроків, які допоможуть спростити цей процес. Деякі з цих кроків вже мали бути зроблені, але вони повторюються тут, щоб мати можливість надати повну покрокову послідовність.

Зауваження :

І PATH, і PATHEXT є важливими змінними, які спочатку існували у Windows, і слід подбати про те, щоб не перезаписувати жодну зі змінних, а лише додавати до них.

  • Додайте розташування файлу PHP (php.exe, php-win.exe або php-cli.exe залежно від вашої версії PHP і переваг відображення) в змінну оточення PATH. Докладніше про те, як додати каталог PHP до PATH, читайте ввідповідного запису часто задаваних питань

  • Додати розширення.PHPдо змінної оточення PATHEXT. Це можна зробити одночасно із зміною змінної оточення PATH. Виконайте ті ж дії, що і вЧАВО, але змініть змінну оточення PATHEXT, а не PATH.

    Зауваження :

    Позиція, в яку ви поміщаєте.PHP, визначатиме, який скрипт чи програма виконуватиметься при збігу імен файлів. Наприклад, розміщення.PHPперед.BATпризведе до запуску вашого скрипта, а не пакетного файлу, якщо існує пакетний файл з тим самим ім'ям.

  • Зв'яжіть розширення.PHPіз типом файлу. Це робиться за допомогою наступної команди:

    assoc .php=phpfile
    
  • Зв'яжіть тип файлуphpfileз відповідним файлом PHP, що виконується. Це робиться за допомогою наступної команди:

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

Виконання цих кроків дозволить запускати скрипти PHP з будь-якого каталогу без необхідності вводити файл PHP або розширення, що виконується. .PHP, і всі параметри буде передано скрипту для обробки.

У наведеному нижче прикладі описано подробиці про деякі зміни в реєстрі, які можна зробити вручну.

Приклад #1 Зміни у реєстрі

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"

З цими змінами цю команду можна записати як:

"C:\PHP Scripts\script" -arg1 -arg2 -arg3

або, якщо ваш шлях "C:\PHP Scripts" знаходиться в змінному оточенні PATH:

script -arg1 -arg2 -arg3

Зауваження :

Є невелика проблема, якщо ви збираєтеся використовувати цю техніку і використовувати свої скрипти PHP як фільтр командного рядка, як у прикладі нижче:

dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3

або

dir | script -arg1 -arg2 -arg3

Ви можете виявити, що сценарій просто зависає і нічого не виводиться. Щоб це запрацювало, необхідно внести ще одну зміну до Реєстру.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"InheritConsoleHandles"=dword:00000001

Додаткову інформацію щодо цієї проблеми можна знайти в цій » статті бази знань Microsoft : 321788. У Windows 10 цей параметр змінено на протилежний, і стандартне встановлення Windows 10 підтримує успадковані дескриптори консолі. Це »  повідомлення на форумі Microsoft надає пояснення.