我正在尝试在 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
答案 0 :(得分:1)
看看异常起源的位置和原因。 (我将在代码示例中使用 react/filesystem:0.1.2
。)
异常在 React\Filesystem\Filesystem::create()
中抛出。支持的适配器列表从 React\Filesystem\Filesystem::getSupportedAdapters()
获得。
通过这种方式,您将使用定义给定适配器是否在您的平台上可用的方法:
方法Eio\Adapter::isSupported()
:
return substr(strtolower(PHP_OS), 0, 3) !== 'win' && function_exists('proc_open');
这意味着您的平台不能是 Windows,并且必须存在 proc_open()
函数(即,不得通过 disable_functions
指令出于安全原因禁用它)。
方法ChildProcess\Adapter::isSupported()
:
return extension_loaded('eio');
这意味着必须安装 eio
PHP 扩展,请参阅 installation instructions。
对我来说,它也不能像我在 Windows 上那样工作。对于使用 ReactPHP 进行开发,通常最好在 Linux 虚拟机上运行 PHP 以获得更好的兼容性。