Командний рядок 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 надає пояснення.