workerman 启动报“function may be disabled”通常指 stream_socket_server、pcntl_fork、posix_setsid 等核心函数被禁用;需同步检查并修改 php.ini 和 php-cli.ini 中的 disable_functions,同时确保 pcntl 与 posix 扩展已启用。

Workerman 启动报 “Function may be disabled” 是哪个函数被禁了?
Workerman 启动失败时,常见错误提示里明确会指出具体函数名,比如:stream_socket_server、pcntl_fork、posix_setsid 等。这些不是“可能被禁”,而是 Workerman 运行时**必须调用的核心函数**——只要其中任意一个在 disable_functions 里,服务就起不来。
典型必解禁函数清单(按依赖强度排序):
-
stream_socket_server和stream_socket_client:监听和连接网络套接字,缺一不可;报错关键词是unable to connect to tcp://...或has been disabled for security reasons -
pcntl_fork、pcntl_signal、pcntl_signal_dispatch、pcntl_alarm:用于进程管理与信号处理;没它们,Worker 进程根本无法派生和响应重启/停止指令 -
posix_setsid、posix_getpid、posix_kill、posix_getuid:配合 pcntl 实现守护进程化;报错常表现为Undefined function posix_setsid
为什么只改 php.ini 还是报错?CLI 环境也得同步检查
宝塔对 Web 请求(PHP-FPM)和命令行(CLI)用了两套配置:Web 走 /www/server/php/84/etc/php.ini,而 php start.php start 这类操作走的是 CLI 模式,读的是 /www/server/php/84/etc/php-cli.ini(如果存在)。很多人只改了前者,结果终端一执行就报 function_exists('pcntl_fork') === false。
验证 CLI 是否生效的命令(替换版本号):
/www/server/php/84/bin/php -r "var_dump(function_exists('pcntl_fork'), function_exists('stream_socket_server'));"
输出两个 bool(true) 才算真正解禁。若仍为 false,就得去查 php-cli.ini 里的 disable_functions 行,并同样删掉对应函数。
别直接注释整行 disable_functions,小心语法崩坏
有人图省事,在 disable_functions = exec,passthru,... 前加 ; 注释掉整行。这看似“解禁”,实则危险:PHP 会 fallback 到默认禁用列表(含 system 等),而且某些旧版宝塔或自定义编译 PHP 会因此忽略后续配置项,导致 extension= 加载失败或 open_basedir 失效。
正确做法是精准删减:
- 找到
disable_functions =这一行 - 只删除你确认 Workerman 需要的函数名,连同它前后的逗号一起删(例如从
,pcntl_fork,变成,,,再手动合并多余逗号) - 确保删完后仍是合法 CSV 格式,末尾不带逗号,也不留空格
- 改完必须重启 PHP 服务,仅保存文件无效
站点级解禁比全局更安全,但注意它不作用于 CLI
如果你只希望某个网站能跑 Workerman,其他站点继续严格限制,就该用宝塔的“网站 → 设置 → 配置文件 → PHP 配置文件”区域,新增:
disable_functions =
或者更稳妥地写:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen
这样只放开 Workerman 必需的,同时保留其余危险函数禁用。但注意:这个配置**只影响该站点的 PHP-FPM 进程**,对 php start.php start 这种 CLI 启动方式完全无效——CLI 还得靠 php-cli.ini 单独处理。
最易被忽略的一点:即使所有函数都解禁了,也要确认 pcntl 和 posix 扩展已启用(宝塔 PHP 设置 → 安装扩展里勾选)。函数存在 ≠ 扩展加载,两者缺一不可。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











