PHP:
Запис до стандартної помилки

Як зробити:

У PHP запис у stderr може бути досягнутий з використанням функції fwrite() разом з попередньо визначеною константою STDERR, яка представляє потік виводу помилок.

<?php
// Запис простого повідомлення в stderr.
fwrite(STDERR, "Це повідомлення про помилку.\n");

Приклад виводу при виконанні скрипта з командного рядка:

Це повідомлення про помилку.

Щоб продемонструвати більш практичне використання, розгляньте сценарій, коли ви аналізуєте вхідні дані користувача і натрапляєте на неочікувані дані:

<?php
$input = 'неочікувані дані';

// Симуляція помилки при обробці вхідних даних користувача.
if ($input === 'неочікувані дані') {
    fwrite(STDERR, "Помилка: Отримано несподівані вхідні дані.\n");
    exit(1); // Вихід з ненульовим значенням, щоб вказати на помилку.
}

Хоча вбудовані можливості PHP для обробки stderr загалом достатні, при роботі з більш складними програмами або при бажанні інтегрувати журналювання помилок stderr з зовнішніми системами, бібліотеки третіх сторін, як-от Monolog, можуть бути потужним союзником. Monolog - це бібліотека для ведення журналів, яка може обробляти stderr серед багатьох інших цілей (файли, сокети тощо).

Використання Monolog для запису в stderr:

Спочатку переконайтеся, що у вас встановлений Monolog через Composer:

composer require monolog/monolog

Після цього ви можете налаштувати Monolog на використання StreamHandler, націленого на php://stderr:

<?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, що є особливо корисним для програм, які потребують детальних налаштувань журналювання або зовнішнього моніторингу журналів.