PHP:
写入标准错误

如何操作:

在 PHP 中,可以使用 fwrite() 函数以及预定义常量 STDERR(代表错误输出流)来实现写入 stderr。

<?php
// 向 stderr 写入一个简单的信息。
fwrite(STDERR, "这是一个错误消息。\n");

当从命令行执行脚本时的示例输出:

这是一个错误消息。

为了展示更实际的用法,考虑一个你正在解析用户输入并遇到意外数据的场景:

<?php
$input = 'unexpected data';

// 模拟处理用户输入的错误。
if ($input === 'unexpected data') {
    fwrite(STDERR, "错误:收到了意外的输入。\n");
    exit(1); // 以非零值退出,表明有错误。
}

虽然 PHP 的内置 stderr 处理能力通常已经足够,但是在处理更复杂的应用程序或希望将 stderr 日志记录与外部系统集成时,第三方库如 Monolog 可以是强大的帮手。Monolog 是一个日志记录库,它可以处理 stderr 以及许多其他目标(文件、套接字等)。

使用 Monolog 写入 stderr:

首先,确保通过 Composer 安装了 Monolog:

composer require monolog/monolog

然后,您可以配置 Monolog 使用针对 php://stderrStreamHandler

<?php
require 'vendor/autoload.php';

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

// 创建日志频道
$log = new Logger('name');
$log->pushHandler(new StreamHandler('php://stderr', Logger::WARNING));

// 向 stderr 添加一条日志消息
$log->warning('这是一个警告消息。');

上述代码利用 Monolog 向 stderr 发送警告消息,这对于需要详细日志配置或外部日志监控的应用程序非常有用。