http-server icon indicating copy to clipboard operation
http-server copied to clipboard

PHP Fatal error: Uncaught Error: Class 'Amp\Log\StreamHandler' not found in

Open pollyolly opened this issue 4 months ago • 1 comments

I am unable to run the sample in the documentation because the logger is not working using the command and the code below.

Install as composer dependency

$composer require amphp/http-server --dev

Run Code

$php test.php
<?php
use Amp\ByteStream;
use Amp\Http\HttpStatus;
use Amp\Http\Server\DefaultErrorHandler;
use Amp\Http\Server\Request;
use Amp\Http\Server\RequestHandler;
use Amp\Http\Server\Response;
use Amp\Http\Server\SocketHttpServer;
use Amp\Log\ConsoleFormatter;
use Amp\Log\StreamHandler;
use Monolog\Logger;
use Monolog\Processor\PsrLogMessageProcessor;

require __DIR__.'/vendor/autoload.php';

// Note any PSR-3 logger may be used, Monolog is only an example.
$logHandler = new StreamHandler(ByteStream\getStdout());
$logHandler->pushProcessor(new PsrLogMessageProcessor());
$logHandler->setFormatter(new ConsoleFormatter());

$logger = new Logger('server');
$logger->pushHandler($logHandler);

$requestHandler = new class() implements RequestHandler {
    public function handleRequest(Request $request) : Response
    {
        return new Response(
            status: HttpStatus::OK,
            headers: ['Content-Type' => 'text/plain'],
            body: 'Hello, world!',
        );
    }
};

$errorHandler = new DefaultErrorHandler();

$server = SocketHttpServer::createForDirectAccess($logger);
$server->expose('127.0.0.1:1337');
$server->start($requestHandler, $errorHandler);

// Serve requests until SIGINT or SIGTERM is received by the process.
Amp\trapSignal([SIGINT, SIGTERM]);

$server->stop();

Im getting the error

PHP Fatal error:  Uncaught Error: Class 'Amp\Log\StreamHandler' not found in 

pollyolly avatar Sep 10 '25 08:09 pollyolly

You'll need to install amphp/log as well.

kelunik avatar Sep 10 '25 09:09 kelunik