Командная строка PHP в Microsoft Windows

В этом разделе содержатся заметки и советы по работе PHP, запущенного из командной строки.

Замечание:

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

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

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

Но есть несколько простых шагов, которые могут упростить задачу. Некоторые из этих шагов уже могли быть выполнены, но будут приведены здесь для того, чтобы последовательность операций не была нарушена.

  • Добавьте расположение исполняемых файлов php (php.exe, php-win.exe или php-cli.exe в зависимости от ваших предпочтений и версии PHP) в переменную окружения PATH. О том, как добавить вашу директорию к PATH читайте в соответсвующем разделе FAQ.

  • Добавьте .PHP расширение в переменную окружения PATHEXT. Это может быть сделано при изменении переменной PATH. Сделайте те же шаги, которые описаны в FAQ, для переменной PATH, но для PATHEXT.

    Замечание:

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

  • Ассоциируйте расширение .PHP с конкретным типом фапйла. Это можно сделать выпонив следующую команду:

    assoc .php=phpfile
    

  • Ассоцируйте тип файла phpfile с соответствующим исполняемым PHP файлом. Это можно сделать выполнив команду:

    ftype phpfile="C:\PHP5\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:\\PHP5\\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:\\PHP5\\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.


Участник рейтинга Тэглайн 2010