1
0
mirror of https://github.com/php/doc-zh.git synced 2026-04-25 00:58:02 +02:00
Files
魔王卷子 a49b6b6095 part 2 of the errorfunc (#343)
* Update debug-backtrace.xml

* Update debug-print-backtrace.xml

* Update error-clear-last.xml

* Update error-get-last.xml

* Update error-log.xml

* Update restore-error-handler.xml

* Update restore-exception-handler.xml

* Update set-error-handler.xml

* Update set-exception-handler.xml

* Update trigger-error.xml

* Update set-exception-handler.xml

* Update restore-exception-handler.xml
2022-09-20 23:16:28 +08:00

209 lines
6.3 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 769812c12f00c1978bf7dd711dca38dbf05462da Maintainer: daijie Status: ready -->
<!-- CREDITS: mowangjuanzi -->
<refentry xml:id="function.error-log" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>error_log</refname>
<refpurpose>发送错误信息到某个地方</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>error_log</methodname>
<methodparam><type>string</type><parameter>message</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>message_type</parameter><initializer>0</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>destination</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>additional_headers</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
把错误信息发送到 web 服务器的错误日志,或者到一个文件里。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>message</parameter></term>
<listitem>
<para>
应该被记录的错误信息。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>message_type</parameter></term>
<listitem>
<para>
设置错误应该发送到何处。可能的信息类型有以下几个:
</para>
<para>
<table>
<title><function>error_log</function> 日志类型</title>
<tgroup cols="2">
<tbody>
<row>
<entry>0</entry>
<entry>
<parameter>message</parameter> 发送到 PHP 的系统日志,使用
操作系统的日志机制或者一个文件,取决于
<link linkend="ini.error-log">error_log</link> 指令设置了什么。
这是个默认的选项。
</entry>
</row>
<row>
<entry>1</entry>
<entry>
<parameter>message</parameter> 发送到参数 <parameter>destination</parameter>
设置的邮件地址。
第四个参数 <parameter>additional_headers</parameter> 只有在这个类型里才会被用到。
</entry>
</row>
<row>
<entry>2</entry>
<entry>
不再是一个选项。
</entry>
</row>
<row>
<entry>3</entry>
<entry>
<parameter>message</parameter> 被发送到位置为 <parameter>destination</parameter> 的文件里。
字符 <parameter>message</parameter> 不会默认被当做新的一行。
</entry>
</row>
<row>
<entry>4</entry>
<entry>
<parameter>message</parameter> 直接发送到 SAPI 的日志处理程序中。
</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>destination</parameter></term>
<listitem>
<para>
目标。它的含义描述于以上,由
<parameter>message_type</parameter> 参数所决定。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>additional_headers</parameter></term>
<listitem>
<para>
额外的头。当 <parameter>message_type</parameter>
设置为 <literal>1</literal> 的时候使用。
该信息类型使用了 <function>mail</function> 的同一个内置函数。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;如果 <parameter>message_type</parameter> 是 0,此函数始终返回
&true;,无论是否可以记录错误。
</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>destination</parameter>
<parameter>additional_headers</parameter> 允许为 null。
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example role="php">
<title><function>error_log</function> 范例</title>
<programlisting role="php">
<![CDATA[
<?php
// 如果无法连接到数据库,发送通知到服务器日志
if (!Ora_Logon($username, $password)) {
error_log("Oracle database not available!", 0);
}
// 如果用尽了 FOO,通过邮件通知管理员
if (!($foo = allocate_new_foo())) {
error_log("Big trouble, we're all out of FOOs!", 1,
"operator@example.com");
}
// 调用 error_log() 的另一种方式:
error_log("You messed up!", 3, "/var/tmp/my-errors.log");
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<warning>
<simpara>
<function>error_log</function> 并非二进制安全的。null 字符可能截断 <parameter>message</parameter>
</simpara>
</warning>
<tip>
<simpara>
<parameter>message</parameter> 不能包含 null 字符。注意,<parameter>message</parameter>
可能会发送到文件、邮件、syslog 等。所以在调用 <function>error_log</function>
前需要使用适合的转换/转义函数:<function>base64_encode</function><function>rawurlencode</function><function>addslashes</function>
</simpara>
</tip>
</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
-->