使用WooCommerce PDF Watermark出现FPDF报错水印不显示如何解决
WooCommerce PDF Watermark插件报错修复方案
问题描述
运行于GoDaddy托管服务器的WordPress站点使用WooCommerce PDF Watermark插件时出现两个关联错误,导致水印无法生成:
提示:
iconv(): Wrong charset, conversion from 'UTF-8' to 'ISO-8859-1//TRANSLIT' is not allowed in /var/www/wp-content/plugins/woocommerce-pdf-watermark/includes/class-wc-pdf-watermarker.php on line 128
致命错误:Uncaught Exception: FPDF error: Some data has already been output, can't send PDF file in /var/www/wp-content/plugins/woocommerce-pdf-watermark/includes/lib/fpdf/fpdf.php on line 292
根因说明
第一个iconv编码转换错误是核心根因:GoDaddy服务器默认的iconv扩展配置不支持//TRANSLIT转换后缀,执行转换时会抛出PHP警告,警告内容提前输出到响应中,触发FPDF类的输出检查机制,最终导致PDF无法生成,抛出第二个致命错误。
分步修复步骤
- 修复iconv编码转换错误(二选一即可,优先选方案2避免插件更新覆盖修改)
方案1:临时修改插件代码
找到/var/www/wp-content/plugins/woocommerce-pdf-watermark/includes/class-wc-pdf-watermarker.php文件第128行的iconv调用代码,将转换目标编码从ISO-8859-1//TRANSLIT修改为ISO-8859-1//IGNORE,如果仍报错直接改为ISO-8859-1即可。
方案2:永久修改PHP配置
登录GoDaddy主机管理面板,找到站点对应的php.ini配置文件,添加或修改以下3行配置:
保存后重启PHP服务,配置生效后无需修改插件代码即可解决编码转换问题。iconv.input_encoding = UTF-8 iconv.internal_encoding = UTF-8 iconv.output_encoding = ISO-8859-1 - 排查残留的提前输出问题
修复iconv错误后如果还有FPDF输出报错,检查两处文件:- 站点根目录的
wp-config.php,确保<?php标记在文件第一行,文件末尾不要添加?>闭合标记,去掉所有PHP标记外的空格、空行 - 当前激活主题的
functions.php,同样排查首尾是否有多余输出,排除其他插件产生的额外打印内容
- 站点根目录的
- 验证修复效果
进入WooCommerce PDF Watermark插件设置页重新生成水印预览,或模拟下单生成带水印的PDF票据,确认水印正常显示,无报错信息。
注意事项
- 修改插件代码或配置文件前请先备份原文件,避免修改错误导致站点异常
- 若后续更新WooCommerce PDF Watermark插件,需重新检查插件代码是否被覆盖,建议优先使用修改PHP配置的方案
内容的提问来源于stack exchange,提问作者Vince
相关产品推荐
相关产品推荐

