ReactPHP 文件系统 - 找不到此安装支持的适配器

时间:2021-05-02 10:11:28

标签: php reactphp

我正在尝试在 PHP 7 和 8 上运行这个简单的代码:

$loop = \React\EventLoop\Factory::create();
$filesystem = \React\Filesystem\Filesystem::create($loop);
$file = $filesystem->file('test.txt');
$file->getContents()->then(function ($contents) {
    echo $contents . PHP_EOL;
});
$loop->run();

installing via composer之后,但它告诉我缺少adapter

错误:

PHP Fatal error:  Uncaught RuntimeException: No supported adapter found for this installation in \root\src\Filesystem.php:31
Stack trace:
#0 \root\try.php(6): React\Filesystem\Filesystem::create()
#1 {main}
  thrown in \root\vendor\react\filesystem\src\Filesystem.php on line 31

1 个答案:

答案 0 :(得分:1)

看看异常起源的位置和原因。 (我将在代码示例中使用 react/filesystem:0.1.2。)

异常在 React\Filesystem\Filesystem::create() 中抛出。支持的适配器列表从 React\Filesystem\Filesystem::getSupportedAdapters() 获得。

通过这种方式,您将使用定义给定适配器是否在您的平台上可用的方法:

  1. 方法Eio\Adapter::isSupported()
    return substr(strtolower(PHP_OS), 0, 3) !== 'win' && function_exists('proc_open');
    这意味着您的平台不能是 Windows,并且必须存在 proc_open() 函数(即,不得通过 disable_functions 指令出于安全原因禁用它)。

  2. 方法ChildProcess\Adapter::isSupported()
    return extension_loaded('eio');
    这意味着必须安装 eio PHP 扩展,请参阅 installation instructions

对我来说,它也不能像我在 Windows 上那样工作。对于使用 ReactPHP 进行开发,通常最好在 Linux 虚拟机上运行 PHP 以获得更好的兼容性。