Make sure your run CMD.exe as an administrator, otherwise you'll get an "access denied" when you run the commands.
Раздел содержит примечания и подсказки, которые касаются запуска 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
Make sure your run CMD.exe as an administrator, otherwise you'll get an "access denied" when you run the commands.
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".