1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-24 07:42:22 +01:00
Files
archived-doc-ru/install/windows/commandline.xml

210 lines
8.0 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 2dbf3d9064d4cb07f0a2f7d06641c877a2e5ed24 Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<sect1 xml:id="install.windows.commandline" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Запуск PHP в командной строке системы Windows</title>
<para>
Раздел содержит примечания и подсказки, которые касаются запуска PHP
из командной строки Windows.
</para>
<note>
<para>
Сначала прочитайте <link linkend="install.windows.manual">пошаговое
руководство по установке</link>!
</para>
</note>
<para>
PHP запускают из командной строки без внесения каких бы то ни было
изменений в Windows.
<screen>
<![CDATA[
C:\php\php.exe -f "C:\PHP Scripts\script.php" -- -arg1 -arg2 -arg3
]]>
</screen>
</para>
<para>
Но есть несколько шагов, которые упрощают запуск PHP из командной строки.
Отдельные шаги уже выполнили, но они повторяются
здесь, чтобы объяснить последовательность действий.
<itemizedlist>
<note>
<para>
Переменные окружения <envar>PATH</envar> и <envar>PATHEXT</envar>
важные переменные, которые появились в Windows в самом начале и которые
нельзя перезаписывать, а только добавлять для них значения.
</para>
</note>
<listitem>
<para>
Добавьте расположение исполняемого файла PHP — <filename>php.exe</filename>,
<filename>php-win.exe</filename> или <filename>php-cli.exe</filename>,
в зависимости от версии PHP и предпочтений отображения — в переменную
окружения <envar>PATH</envar>. Подробнее о добавлении каталога PHP
в переменную окружения <envar>PATH</envar> рассказывает
<link linkend="faq.installation.addtopath">запись часто
задаваемых вопросов</link>.
</para>
</listitem>
<listitem>
<para>
Добавьте расширение <literal>.PHP</literal> к переменной окружения
<varname>PATHEXT</varname>. Это делают одновременно с изменением
переменной окружения <envar>PATH</envar>. Выполните те же действия,
что и в <link linkend="faq.installation.addtopath">ЧАВО</link>, но измените
переменную окружения <varname>PATHEXT</varname>, а не <envar>PATH</envar>.
<note>
<para>
Позиция, в которую помещают расширение <literal>.PHP</literal>, будет определять,
какой скрипт или программа выполнится при совпадении имён файлов.
Например, расположение расширения <literal>.PHP</literal> перед расширением
<literal>.BAT</literal> запустит скрипт, а не пакетный файл, если каталог
содержит пакетный файл с тем же названием.
</para>
</note>
</para>
</listitem>
<listitem>
<para>
Настройте ассоциацию расширения <literal>.PHP</literal> с типом файла
путём запуска следующей команды:
<screen>
<![CDATA[
assoc .php=phpfile
]]>
</screen>
</para>
</listitem>
<listitem>
<para>
Настройте ассоциацию типа файла <literal>phpfile</literal> с исполняемым файлом PHP,
который соответствует этому типу файла, путём запуска следующей команды:
<screen>
<![CDATA[
ftype phpfile="C:\php\php.exe" -f "%1" -- %~2
]]>
</screen>
</para>
</listitem>
</itemizedlist>
</para>
<para>
Эти шаги настроят запуск PHP-скриптов из любого каталога
без ввода исполняемого PHP-файла или расширения
<literal>.PHP</literal>, а параметры передадутся скрипту для обработки.
</para>
<para>
Следующий пример приводит отдельные изменения в реестре,
которые вносят вручную.
<example>
<title>Пример изменений в реестре</title>
<screen>
<![CDATA[
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"
]]>
</screen>
</example>
</para>
<para>
С этими изменениями эту же команду получится записать вот так:
<screen>
<![CDATA[
"C:\PHP Scripts\script" -arg1 -arg2 -arg3
]]>
</screen>
или, если путь <literal>"C:\PHP Scripts"</literal> записали в переменную
окружения <envar>PATH</envar>:
<screen>
<![CDATA[
script -arg1 -arg2 -arg3
]]>
</screen>
</para>
<note>
<para>
При такой технике запуска возникает небольшая проблема
с запуском PHP-скриптов в качестве фильтра командной строки,
как в примере ниже:
<screen>
<![CDATA[
dir | "C:\PHP Scripts\script" -arg1 -arg2 -arg3
]]>
</screen>
или
<screen>
<![CDATA[
dir | script -arg1 -arg2 -arg3
]]>
</screen>
Иногда скрипт просто зависает и ничего не выводит.
В реестр вносят ещё одно изменение, чтобы это заработало.
<screen>
<![CDATA[
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer]
"InheritConsoleHandles"=dword:00000001
]]>
</screen>
Дополнительную информацию по этой проблеме даёт <link
xlink:href="http://support.microsoft.com/default.aspx?scid=kb;en-us;321788">
статья базы знаний Microsoft: 321788</link>.
В Windows 10 этот параметр изменили на противоположный, и стандартная
установка Windows 10 поддерживает унаследованные дескрипторы консоли. Это <link
xlink:href="https://social.msdn.microsoft.com/Forums/en-US/f19d740d-21c8-4dc2-a9ab-d5c0527e932b/nasty-file-association-regression-bug-in-windows-10-console?forum=windowssdk">
сообщение на форуме Microsoft</link> даёт объяснение.
</para>
</note>
</sect1><!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->