1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-27 09:12:07 +01:00
Files
archived-doc-ru/install/windows/commandline.xml
Sergey Panteleev 300ffa98fb Исправление форматирования (#362)
[skip-spellcheck]
[skip-lint]
2021-10-21 09:47:52 +03:00

210 lines
8.3 KiB
XML
Raw 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: 8e732e84a1425cf0ab3a5b0da8fe113c7a6da85e 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 в Microsoft 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>
Но есть несколько шагов, которые помогут упростить этот процесс.
Некоторые из этих шагов уже должны были быть предприняты, но они повторяются
здесь, чтобы иметь возможность предоставить полную пошаговую последовательность.
<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
-->