如何在Adminer中正确配置使用Pretty JSON Column插件
Adminer Pretty JSON Column 插件配置报错解决
错误根因
触发Call to a member function _callParent() on string致命错误,核心是两处配置错误:
- 插件实例化传参完全错误:把
json_encode()生成的字符串传给了插件构造函数,而这个构造函数不需要传入任何自定义JSON处理逻辑,插件本身已经内置JSON自动美化、格式校验逻辑,传入的字符串覆盖了插件内部存储Adminer核心对象的属性,后续调用类方法时必然报错。 - Docker挂载逻辑错误:直接把插件源码文件挂载到
plugins-enabled目录,还自行在源码里重复编写require、实例化逻辑,不符合Adminer官方Docker镜像的插件加载规则。
正确配置步骤
1. 整理本地目录结构
在存放docker-compose.yml的同级目录创建plugins文件夹,将下载得到的pretty-json-column.php原始插件源码(不要修改源码内容、不要追加自定义实例化代码)放入该文件夹。
2. 替换Docker Compose配置
用以下配置替换原有docker-compose.yml内容:
version: '3.7' services: adminer: image: 'adminer:latest' restart: always user: root ports: - '8080:8080' volumes: - ./plugins:/var/www/html/plugins-enabled environment: - PUID=0 - PGID=0 - 'ADMINER_DESIGN=dracula' - 'ADMINER_PLUGINS=dump-json dump-xml dump-zip pretty-json-column'
注意必须把pretty-json-column加到ADMINER_PLUGINS的插件列表中,镜像启动时会自动生成对应插件加载配置。
3. 手动加载场景的配置写法
如果不依赖镜像的自动插件加载能力,需要手动编写插件入口文件,只需要在plugins目录下的对应加载文件中写入如下内容即可,不需要传入任何构造参数:
<?php return new AdminerPrettyJsonColumn();
不要在配置中写入json_encode($value, JSON_PRETTY_PRINT)这类传参,这部分逻辑插件已经内置实现。
效果验证
重启容器后访问Adminer,进入带有JSON字段的表,直接粘贴测试JSON内容保存,再次查看字段时会自动按缩进格式美化显示,不会再触发致命错误。插件会自动完成JSON格式化、格式校验逻辑,不需要额外传参配置。
内容的提问来源于stack exchange,提问作者user2986242
相关产品推荐
相关产品推荐

