Class not found 主因是 autoloader 未加载:先验证 file_exists(__DIR__.'/vendor/autoload.php') 是否为 true,再确认 require_once 路径是否正确(必须用 __DIR__ 且 vendor 存在),排除 CLI php.ini 禁用函数及大小写错误。

不是类没装,是 autoloader 没加载到 —— 90% 的情况是 require_once 路径错了,或 vendor/autoload.php 根本不存在。
require_once 路径指向错误
Workerman 类找不到,第一反应不该是“没装”,而是检查 require_once 是否真的加载了自动加载器。常见错误包括:
- 路径写成相对路径但执行位置不对,比如在项目根目录外运行
php start.php,而代码里写的是require_once 'vendor/autoload.php' - 用了
__DIR__却拼错层级,例如写成require_once __DIR__.'/../vendor/autoload.php',实际 vendor 在同级 - Composer 没执行过
composer install,导致vendor/autoload.php文件压根不存在
验证方法:在 start.php 开头加一行 var_dump(file_exists(__DIR__.'/vendor/autoload.php'));,输出 false 就直接定位问题。
CLI 环境没读对 php.ini,扩展或函数被禁用
Workerman 启动失败报 Class 'Worker' not found,有时其实是底层依赖出问题,比如 stream_socket_server 被禁用,导致 Worker 类初始化时抛异常退出,后续 autoloader 也跟着失效(看起来像“类不存在”)。
立即学习“PHP免费学习笔记(深入)”;
- 运行
php --ini确认 CLI 模式读的是哪个php.ini,别和 Apache/Nginx 的搞混 - 检查该
php.ini中的disable_functions是否包含stream_socket_server、pcntl_fork等 Workerman 必需函数 - 运行
php -m | grep -i socket确认sockets扩展已启用(不是socket,注意复数)
Composer 自动加载未生效(尤其多版本共存时)
如果你用 composer global require workerman/workerman 或手动拷了 Workerman 目录,但没走 Composer autoloader,use Workerman\Worker 就一定失败。
- Workerman 官方不推荐全局安装;正确做法是项目内执行
composer require workerman/workerman - 确保
start.php中require_once指向的是项目vendor/autoload.php,而不是某个全局路径 - 如果非要用独立包(不走 Composer),必须手动
require所有核心文件,例如:require_once 'Workerman/Autoloader.php'; Workerman\Autoloader::register();
最常被忽略的一点:Workerman 的类名大小写敏感,且命名空间严格为 Workerman\*。写成 workerman\Worker 或 Worker(没 use)都会报错,但错误信息还是 “Class not found”,容易误判根源。



















