PHP生成二维码是Web开发中常见的功能需求,可通过成熟的第三方库快速实现,不需要自己编写复杂的二维码编码逻辑。目前最常用的PHP二维码生成库是phpqrcode,它轻量易用,支持自定义二维码尺寸、容错率等参数。

环境准备
首先需要确保PHP环境满足以下要求:
- PHP版本不低于5.3,建议7.0及以上版本以获得更好的性能
- 开启GD库扩展,用于生成图片文件,可通过
phpinfo()查看GD库是否启用 - 下载phpqrcode库,可从官方仓库获取源码,将核心文件放到项目目录中
引入phpqrcode库
将下载的phpqrcode库文件放到项目的libs目录下,核心文件是qrlib.php,引入方式如下:
<?php // 引入phpqrcode核心文件 require_once 'libs/phpqrcode/qrlib.php'; ?>
基础二维码生成示例
生成最简单的文本二维码,将指定内容转换为二维码图片并直接输出到浏览器:
<?php require_once 'libs/phpqrcode/qrlib.php'; // 要编码到二维码的内容 $content = 'https://ipipp.com/php-qrcode-demo'; // 容错级别 L低 M中 Q较高 H最高 $errorCorrectionLevel = 'L'; // 二维码像素大小,数值越大二维码越大 $matrixPointSize = 4; // 生成二维码并直接输出到浏览器 QRcode::png($content, false, $errorCorrectionLevel, $matrixPointSize, 2); ?>
运行上述代码后,浏览器会直接显示生成的二维码图片,扫描后可跳转到对应的链接地址。
保存二维码到本地文件
实际项目中更多是将二维码保存到服务器指定目录,方便后续调用或下载,示例代码如下:
<?php require_once 'libs/phpqrcode/qrlib.php'; // 二维码内容 $content = '订单编号:202405001,金额:199.00元'; // 保存路径,确保目录有写入权限 $savePath = './qrcodes/order_202405001.png'; // 容错级别 $errorCorrectionLevel = 'M'; // 二维码尺寸 $matrixPointSize = 6; // 生成并保存二维码 QRcode::png($content, $savePath, $errorCorrectionLevel, $matrixPointSize, 2); echo '二维码已保存到:' . $savePath; ?>
自定义二维码参数说明
QRcode::png方法的参数含义如下:
| 参数位置 | 参数名 | 说明 |
|---|---|---|
| 1 | text | 要编码到二维码的文本内容,支持中文、链接、数字等 |
| 2 | outfile | 保存路径,为false时直接输出到浏览器 |
| 3 | level | 容错级别,可选L、M、Q、H,容错率依次升高 |
| 4 | size | 二维码矩阵点大小,默认4,范围1-10 |
| 5 | margin | 二维码边距,默认2,单位为像素 |
中文内容处理注意事项
如果二维码内容包含中文,需要确保文件编码为UTF-8,避免生成乱码:
<?php require_once 'libs/phpqrcode/qrlib.php'; // 中文内容,文件需保存为UTF-8编码 $content = '欢迎访问ipipp.com技术教程站'; // 保存路径 $savePath = './qrcodes/chinese_qr.png'; QRcode::png($content, $savePath, 'L', 5, 2); echo '中文内容二维码生成完成'; ?>
注意:如果中文内容出现乱码,检查PHP文件编码是否为UTF-8无BOM格式,同时确保传入的内容没有经过不必要的编码转换。
常见问题排查
- 如果提示找不到phpqrcode文件,检查引入路径是否正确,可使用绝对路径避免相对路径错误
- 保存二维码时提示无权限,需要修改目标目录的写入权限,Linux系统可执行chmod 755 目录名
- 生成二维码后扫描无内容,检查编码内容是否为空,或者容错级别设置是否过低导致内容丢失