## Запуск PHP в командной строке системы Windows

Раздел содержит примечания и подсказки, которые касаются запуска PHP из командной строки Windows.

> Замечание:

> Сначала прочитайте пошаговое руководство по установке!

PHP запускают из командной строки без внесения каких бы то ни было изменений в Windows.

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

Но есть несколько шагов, которые упрощают запуск PHP из командной строки. Отдельные шаги уже выполнили, но они повторяются здесь, чтобы объяснить последовательность действий.

> Замечание:

> Переменные окружения 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 даёт объяснение.

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open