首页 > 解决方案 > 未捕获的错误:找不到类“React\React\EventLoop\Factory”

问题描述

当我运行时,php server.php我收到以下错误:

致命错误:未捕获的错误:在 C:\xampp\htdocs\socket\server.php:7 中找不到类 'React\React\EventLoop\Factory'

我用 composer 抓取 composer require react/socket:^1.3 需要 autoload.php

use React\Http\Server;

require 'vendor/autoload.php';

$loop = React\EventLoop\Factory::create();
$connector = new React\Socket\Connector($loop);

$connector->connect('127.0.0.1:8080')->then(function (React\Socket\ConnectionInterface $connection) use ($loop) {
    $connection->pipe(new React\Stream\WritableResourceStream(STDOUT, $loop));
    $connection->write("Hello World!\n");
});

$loop->run();

标签: phpreactphp

解决方案


嗨,我也有类似的问题,首先,尝试使用这些命令composer require react/event-loopcomposer require react/event-loop:^1.1安装事件循环包,然后尝试使用composer update命令。

1.你的作曲家在安装完所有的包后最终应该会喜欢这个。

{
    "require": {
        "react/http": "^0.8.5",
        "react/mysql": "^0.5.4",
        "nikic/fast-route": "^1.3",
        "react/event-loop": "^1.1"
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

  1. 您的 index.php 必须看起来像这样

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

use React\Http\Response;
use React\Http\Server;
use React\MySQL\Factory;

$loop = \React\EventLoop\Factory::create();

$hello = function () {
    return new Response(200, ['Content-type' => 'text/plain'], 'Hello');
};

$server = new Server($hello);
$socket = new \React\Socket\Server('127.0.0.1:8000', $loop);
$server->listen($socket);

echo 'Listening on ' . str_replace('tcp:', 'http:', $socket->getAddress()) . PHP_EOL;
$loop->run();

然后尝试使用 php index.php 它必须运行。对我来说,它奏效了。希望它可以帮助你!


推荐阅读