You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DirectAdmin API问题:调用CMD_API_SHOW_USER_CONFIG接口返回空数组

看起来你碰到了这么个问题:调用DirectAdmin的CMD_API_SHOW_USER_CONFIG接口返回空数组,但其他API(比如创建用户)却能正常工作。咱们一步步排查可能的原因和解决办法:

先调试原始API响应

你现在的代码只打印了解析后的结果,但原始响应里可能藏着问题线索。先修改代码,输出未处理的原始响应:

<?php
include '../protocol/httpsocket.php';
$sock = new HTTPSocket;
$sock->connect('localhost',2222);
$sock->set_login('admin','admin_password');
$show_user='user5';

// 发送API请求
$sock->query('/CMD_API_SHOW_USER_CONFIG?user='.$show_user);

// 先打印原始响应用于诊断
echo "原始API响应:\n";
echo $sock->fetch_body() . "\n\n";

// 再打印解析后的结果
$result = $sock->fetch_parsed_body();
echo "解析结果:\n";
print_r($result);
?>

常见原因与修复方案

  • 目标用户不存在或拼写错误
    仔细确认user5是DirectAdmin中真实存在的用户名,拼写完全一致——哪怕大小写不对,都可能导致接口找不到用户(取决于服务器配置)。

  • API请求方式不匹配
    部分DirectAdmin API要求用POST请求而非GET。如果你的HTTPSocket::query()方法支持传递POST数据,试试把user参数通过POST发送,而不是拼在URL里:

    // 把原来的query行替换成这个(假设query方法第二个参数是POST数据)
    $sock->query('/CMD_API_SHOW_USER_CONFIG', ['user' => $show_user]);
    

    如果你的httpsocket.php不支持这种方式,可以手动设置请求方法和请求体:

    $sock->method = 'POST';
    $sock->query('/CMD_API_SHOW_USER_CONFIG', 'user=' . urlencode($show_user));
    
  • 解析函数出问题
    fetch_parsed_body()方法可能无法正确解析API返回的内容。DirectAdmin的API通常返回key=value&key2=value2格式的字符串。如果原始响应里有用户配置数据,但解析后是空数组,那得检查httpsocket.php里的解析逻辑——比如是不是用错了分隔符,或者错误跳过了空值。

  • 权限特殊情况
    虽然你的admin账号能创建用户,但也有可能存在自定义权限限制,导致无法查看这个特定用户的配置。去DirectAdmin的管理员设置里确认,你的账号拥有完整的用户管理权限。

原始响应里该看什么

  • 如果看到error=1&text=User does not exist,说明用户名无效;
  • 如果看到一串key=value格式的用户数据,问题出在解析函数上;
  • 如果响应是空的,可能是服务器端有问题(去DirectAdmin的日志里查这个API调用相关的错误)。

内容的提问来源于stack exchange,提问作者Tom Arm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 10:37:34