pChart 已停止维护多年,PHP 7.4+ 环境下无法正常运行,pDraw::drawRadarChart 会因 GD 函数签名变更或类方法缺失而报错,不建议新项目使用。
直接说结论:pChart 已停止维护多年,PHP 7.4+ 环境下无法正常运行,pDraw::drawRadarChart 会因 GD 函数签名变更或类方法缺失而报错,不建议新项目使用。
pDraw::drawRadarChart 总是报错或空白pChart 最后更新停留在 2013 年(v2.1.4),其核心依赖 imagecolorallocatealpha、imagefilledarc 等 GD 函数在 PHP 7.4+ 中行为有变化,且未适配严格类型检查。常见错误包括:
Fatal error: Uncaught Error: Call to undefined method pDraw::drawRadarChart() —— 实际方法名是 drawRadar,不是文档里写的 drawRadarChart

header("Content-type: image/png") 前已有输出(如 BOM、空格、echo),或 GD 扩展未启用Warning: imagepng(): supplied argument is not a valid Image resource —— $myPicture 初始化失败,常见于 new pImage 传入的宽高为 0 或非数字以下代码仅在 PHP ≤ 7.2 + GD 启用 + pChart v2.1.4 下验证通过,注意路径和权限:
addPoints(array(80, 65, 72, 90, 85), "Score");
$myData->setAxisName(0, "Metrics");
$myData->addPoints(array("Code", "Test", "Doc", "Design", "Deploy"), "Labels");
$myData->setSerieDescription("Labels", "Legend");
$myPicture = new pImage(500, 500, $myData);
$myPicture->drawRadar(
array(
"RadarMode" => "circle", // 可选 circle / polygon
"SliceWidth" => 30, // 每个维度标签宽度
"DrawPoly" => TRUE, // 是否填充多边形
"WriteValues" => TRUE, // 是否显示数值
"ValuePadding" => 10,
"CenterX" => 250,
"CenterY" => 250,
"Radius" => 200
)
);
$myPicture->render("radar.png");
?>
关键点:
pData → pDraw → pImage,否则类依赖失败addPoints 第二参数必须与后续 setSerieDescription 的键一致,否则标签不显示render() 写文件时需确保目录可写;若要浏览器直接输出,把 render("radar.png") 换成 stroke(),并在前面加 header("Content-type: image/png");
现代 PHP 项目中,用 pChart 做雷达图属于“修拖拉机式开发”——投入远大于产出。更可行的路径是:
radar 类型),PHP 只提供 JSON 数据接口,json_encode($data) 直接喂给 JSjpgraph(仍在维护,支持 PHP 8.x)或 graphviz + dot 命令行tecnickcom/tcpdf 或 dompdf 渲染含 SVG 雷达图的 PDF,SVG 可由前端库(如 D3 或 Chart.js 导出 SVG)生成后传入真正卡住的往往不是“怎么画”,而是“怎么让图表在 PHP 8.2 + Nginx + OpCache 环境下稳定输出且不被缓存污染”。pChart 在这类环境里连基础 GD 资源释放都不可靠。