Запуск 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 даёт объяснение.

Добавить

Примечания пользователей 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