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


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

Замечание:

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

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

 C:\PHP5\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. О том, как добавить вашу директорию к PATH читайте в соответсвующем разделе FAQ.

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

    Замечание:

    Позиция, в которой вы разместите .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.