-
Notifications
You must be signed in to change notification settings - Fork 105
/
Copy pathexec.xml
187 lines (179 loc) · 5.35 KB
/
exec.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
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: b412bbd26214f7281ac7dd858710e09952a275f2 Maintainer: yuanyuqiang Status: ready -->
<!-- CREDITS: mowangjuanzi -->
<!-- splitted from ./en/functions/exec.xml, last change in rev 1.2 -->
<refentry xml:id="function.exec" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>exec</refname>
<refpurpose>执行一个外部程序</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>string</type><type>false</type></type><methodname>exec</methodname>
<methodparam><type>string</type><parameter>command</parameter></methodparam>
<methodparam choice="opt"><type>array</type><parameter role="reference">output</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type>int</type><parameter role="reference">result_code</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
<function>exec</function> 执行
<parameter>command</parameter> 参数所指定的命令。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>command</parameter></term>
<listitem>
<para>
要执行的命令。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>output</parameter></term>
<listitem>
<para>
如果提供了 <parameter>output</parameter> 参数,
那么会用命令执行的输出填充此数组,
每行输出填充数组中的一个元素。
数组中的数据不包含行尾的空白字符,例如 <literal>\n</literal> 字符。
请注意,如果数组中已经包含了部分元素,<function>exec</function>
函数会在数组末尾追加内容。如果你不想在数组末尾进行追加,
请在传入 <function>exec</function> 函数之前
对数组使用 <function>unset</function> 函数进行重置。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>result_code</parameter></term>
<listitem>
<para>
如果同时提供
<parameter>output</parameter> 和 <parameter>result_code</parameter>
参数,命令执行后的返回状态会被写入到此变量。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
命令执行结果的最后一行内容。
如果你需要获取未经处理的全部输出数据,
请使用 <function>passthru</function> 函数。
</para>
<para>
失败时返回 &false;。
</para>
<para>
如果想要获取命令的输出内容,
请确保使用 <parameter>output</parameter> 参数。
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<para>
如果 <function>exec</function> 无法执行 <parameter>command</parameter>,会发出 <constant>E_WARNING</constant>。
</para>
<para>
如果 <parameter>command</parameter> 为空或者包含 null 字节,则抛出 <classname>ValueError</classname>。
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
如果 <parameter>command</parameter> 为空或者包含 null 字节,<function>exec</function> 现在将抛出
<classname>ValueError</classname>。之前会发出 <constant>E_WARNING</constant> 并返回 &false;。
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>exec</function> 示例</title>
<programlisting role="php">
<![CDATA[
<?php
// 输出运行中的 php/httpd 进程的创建者用户名
// (在可以执行 "whoami" 命令的系统上)
$output=null;
$retval=null;
exec('whoami', $output, $retval);
echo "Returned with status $retval and output:\n";
print_r($output);
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
Returned with status 0 and output:
Array
(
[0] => cmb
)
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
&warn.escapeshell;
¬e.exec-bg;
¬e.exec-bypass-shell;
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>system</function></member>
<member><function>passthru</function></member>
<member><function>escapeshellcmd</function></member>
<member><function>pcntl_exec</function></member>
<member><link linkend="language.operators.execution">执行运算符</link></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- 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
-->