Раздел содержит примечания и подсказки, которые касаются запуска 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Дополнительную информацию по этой проблеме даёт » статья базы знаний Microsoft: 321788. В Windows 10 этот параметр изменили на противоположный, и стандартная установка Windows 10 поддерживает унаследованные дескрипторы консоли. Это » сообщение на форуме Microsoft даёт объяснение.Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer] "InheritConsoleHandles"=dword:00000001