1
0
mirror of https://github.com/php/doc-ja.git synced 2026-03-24 07:02:08 +01:00
Files
archived-doc-ja/install/windows/commandline.xml
2025-08-29 10:21:51 +09:00

218 lines
7.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 2dbf3d9064d4cb07f0a2f7d06641c877a2e5ed24 Maintainer: mumumu Status: ready -->
<sect1 xml:id="install.windows.commandline" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Windows で PHP をコマンドラインで動かす</title>
<para>
この節では、PHP を Windows のコマンドラインで実行するときの注意点やヒントを説明します。
</para>
<note>
<para>
まず最初に <link linkend="install.windows.manual">
手動でのインストールの手順</link> を読みましょう!
</para>
</note>
<para>
特に Windows に手を加えなくても、PHP をコマンドラインから実行することはできます。
<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">FAQ の項目</link>
を参照ください。
</para>
</listitem>
<listitem>
<para>
拡張子 <literal>.PHP</literal> を、環境変数
<varname>PATHEXT</varname> の最後に追加します。これは、環境変数
<envar>PATH</envar> の変更と同時に行うこともできます。
<link linkend="faq.installation.addtopath">FAQ</link>
に書かれている手順に従いましょう。ただし、環境変数
<envar>PATH</envar> の部分は
<varname>PATHEXT</varname> に変更します。
<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 実行ファイルのパスや拡張子 <literal>.PHP</literal> をタイプしなくて済むようになります。
また、スクリプトに渡すパラメータを指定することもできます。
</para>
<para>
次の例は、レジストリの変更の一部を示したものです。これらは手動で行うこともできます。
<example>
<title>Registry changes</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
Knowledgebase Article : 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
-->