PHP:
Kirjoittaminen standardivirheeseen

Kuinka:

PHP:ssä stderr:iin kirjoittaminen onnistuu käyttämällä fwrite()-funktiota yhdessä ennalta määrätyn vakion STDERR kanssa, joka edustaa virheen tulostevirtaa.

<?php
// Yksinkertaisen sanoman kirjoittaminen stderr:iin.
fwrite(STDERR, "Tämä on virhesanoma.\n");

Esimerkkitulo, kun skripti suoritetaan komentoriviltä:

Tämä on virhesanoma.

Esitelläksemme käytännöllisempää käyttöä, kuvittele skenaario, jossa käsittelet käyttäjän syötettä ja kohtaat odottamattoman datan:

<?php
$input = 'odottamaton data';

// Simuloimassa virhettä käyttäjän syötteen käsittelyssä.
if ($input === 'odottamaton data') {
    fwrite(STDERR, "Virhe: Odottamatonta syötettä saatu.\n");
    exit(1); // Poistutaan ei-nolla-arvolla osoittaen virhetilaa.
}

Vaikka PHP:n sisäänrakennetut toiminnot stderr:n käsittelyyn ovat yleensä riittäviä, kun käsitellään monimutkaisempia sovelluksia tai halutaan integroida stderr-lokitus ulkoisiin järjestelmiin, kolmannen osapuolen kirjastot kuten Monolog voivat olla voimakas liittolainen. Monolog on lokituskirjasto, joka pystyy käsittelemään stderr:iä monien muiden kohteiden (tiedostot, socketit jne.) ohella.

Käyttäen Monologia kirjoittaaksesi stderr:iin:

Varmista ensin, että sinulla on Monolog asennettuna Composerin kautta:

composer require monolog/monolog

Sitten voit konfiguroida Monologin käyttämään StreamHandler-käsittelijää kohteena php://stderr:

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

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

// Luo lokituskanava
$log = new Logger('nimi');
$log->pushHandler(new StreamHandler('php://stderr', Logger::WARNING));

// Lisää lokiviesti stderr:iin
$log->warning('Tämä on varoitusviesti.');

Yllä oleva koodi käyttää Monologia lähettääkseen varoitusviestin stderr:iin, mikä on erityisen hyödyllistä sovelluksille, jotka vaativat yksityiskohtaisia lokitusasetuksia tai ulkoista lokien seurantaa.