laravel-octane 启动报错 Class "Swoole\Http\Server" not found

在使用 laravel-octane 过程中,报了一个错误,有没有知道该怎么解决的?

Class "Swoole\Http\Server" not found

  at vendor/laravel/octane/bin/createSwooleServer.php:6
      23$config = $serverState['octaneConfig'];
      45try {6$server = new Swoole\Http\Server(
      7$serverState['host'] ?? '127.0.0.1',
      8$serverState['port'] ?? '8080',
      9SWOOLE_PROCESS,
     10SWOOLE_SOCK_TCP,

具体情况如下:

  1. 源码方式安装 swoole 扩展
    cd swoole-src && \
    phpize && \
    ./configure && \
    make && sudo make install
  2. php.ini 中增加 extension=swoole.so
  3. 使用 php -mphpinfo() 来查看是否安装成功(已经安装成功)
  4. 使用 php artisan octane:install 安装,选择 [1] swoole,成功
  5. 使用 php artisan octane:start 命令启动,报错
  6. 尝试 Google、Stack Overflow,没有找到对应的错误,尝试重启 lnmp 环境、系统,composer dump-autoload 都不行

补充:

laravel-octane 启动报错 Class "Swoole\Http\Server" not found

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
godruoyi
最佳答案

Hi,我看你在博客下也有留言,但我还没回复。

猜测是启动 swoole server 的 php 版本和你安装扩展的不一致,你试试在 StartSwooleCommand.php 打印下 php 可执行文件路径试试,看看和安装扩展的版本是否一致。

file

2年前 评论
大胆的番茄 (楼主) 2年前
godruoyi (作者) 2年前
大胆的番茄 (楼主) 2年前
李铭昕 2年前
大胆的番茄 (楼主) 2年前
Molin 2年前
讨论数量: 13

具体启动的方式描述一下

2年前 评论
大胆的番茄 (楼主) 2年前

你安装的swoole是什么版本的

2年前 评论
大胆的番茄 (楼主) 2年前

建议先学swoole再用swoole相关封装的框架或是包比较好 如果大佬有兴趣可以看看这个 www.bilibili.com/video/BV1354y157S...

2年前 评论

检测一下是否加载了扩展,var_dump(extension_loaded('swoole'))

2年前 评论
大胆的番茄 (楼主) 2年前

在你本地创建脚本 运行一下看看能不能正常工作

file

2年前 评论
大胆的番茄 (楼主) 2年前

file

file

2年前 评论
arvin-hermit 2年前
大胆的番茄 (作者) (楼主) 2年前
arvin-hermit 2年前

composer dump-auto 试一下

2年前 评论

手动修改为\Swoole\Http\Server试试
composer没关系, 这是扩展里面的类

2年前 评论
大胆的番茄 (楼主) 2年前

Fatal error: Uncaught Error: Class "Swoole\Http\Server" not found in /Users/haaid/Develop/other/manager/vendor/laravel/octane/bin/createSwooleServer.php:5

是不是找错位置了?

2年前 评论
大胆的番茄 (作者) (楼主) 2年前
李铭昕

执行 php artisan octane:start 就报错么??

能否截个图看看

2年前 评论
大胆的番茄 (楼主) 2年前
李铭昕 (作者) 2年前
php -r "var_dump(extension_loaded('swoole'));"

可能命令行的 ini 文件和 fpm 的 ini 是分开的

2年前 评论
24K大白羊 2年前
大胆的番茄 (楼主) 2年前

php的系统环境这些可以多提供下,比如是怎么安装php版本的,怎么安装swoole的

2年前 评论
大胆的番茄 (楼主) 2年前
godruoyi

Hi,我看你在博客下也有留言,但我还没回复。

猜测是启动 swoole server 的 php 版本和你安装扩展的不一致,你试试在 StartSwooleCommand.php 打印下 php 可执行文件路径试试,看看和安装扩展的版本是否一致。

file

2年前 评论
大胆的番茄 (楼主) 2年前
godruoyi (作者) 2年前
大胆的番茄 (楼主) 2年前
李铭昕 2年前
大胆的番茄 (楼主) 2年前
Molin 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!