-
Notifications
You must be signed in to change notification settings - Fork 102
/
commandline.xml
194 lines (176 loc) · 5.74 KB
/
commandline.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Revision$ -->
<!-- $Author$ -->
<!-- Reviewed: dallas Maintainer: dallas -->
<!-- EN-Revision: 8e732e84a1425cf0ab3a5b0da8fe113c7a6da85e Maintainer: Luffy Status: ready -->
<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>
本章包含有针对在 Windows 下以命令行运行 PHP 的说明与提示。
</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>)的路径添加到 <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>
之前将导致如果有同名的 PHP 脚本和批处理文件,则 PHP 脚本会运行。
</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">微软知识库文章:321788</link>。
从 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
-->