endroid/qr-code生成二维码报错

使用依赖库endroid/qr-code 生成二维码 报错提示语法解析错误: syntax error, unexpected 'string' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST)

目录

环境

问题

解决

命令

安装fpdf

创建二维码

设置二维码logo

总结


环境

Fastadmin

PHP 7.4.3

endroid/qr-code 4.6

问题

直接在项目根目录命令行中使用composer安装依赖库后。

使用依赖库endroid/qr-code 生成二维码 报错提示语法解析错误: syntax error, unexpected 'string' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST)

但是另一个项目同样的环境和配置,就可以使用。

解决

排查语法和依赖包都没有发现问题。

搜索有提示说php环境不兼容,最终采用降低版本。

命令

bash 复制代码
# 卸载现有版本
composer remove endroid/qr-code

# 安装兼容 PHP 7 的 3.x 版本
composer require endroid/qr-code:^3.9

安装fpdf

改成使用3.9版本时 提示The Fpdf writer requires FPDF as dependency but the class "\FPDF" couldn't be found.

endroid/qr-code 3.9 版本的 FpdfWriter(PDF 格式二维码生成)依赖 FPDF 类,但你当前环境缺少这个依赖库.

命令如下:

bash 复制代码
# 安装FPDF(适配3.9版本的兼容版本)
composer require setasign/fpdf:^1.8

创建二维码

开始创建二维码,传入字符串参数。代码如下:

php 复制代码
/**
 * 创建用户账号二维码
 * @return string
 * @throws \Exception
 */
public function createUserQrCode()
{
    $user = User::getById($this->_user->id);
    if ($user->qr_code) {
        return $user->qr_code;
    }

    // 1. 初始化二维码对象(3.x 版本语法)
    $qrCode = new \Endroid\QrCode\QrCode($user['username']);

    // 2. 配置二维码参数(3.x 版本方法)
    $qrCode->setSize(300);
    $qrCode->setMargin(10);

    // 3. 生成二维码(3.x 版本写法)
    $qrCode->setWriter(new \Endroid\QrCode\Writer\PngWriter());
    $qrCodeData = $qrCode->writeString();

    // 4. 创建文件夹
    $qr_path = './uploads/qrcode';
    if (!is_dir($qr_path)) {
        @mkdir($qr_path, 0755, true);
    }

    // 5. 保存二维码文件
    $filePath = $qr_path . '/qr_' . $this->_user->id . '.png';
    file_put_contents($filePath, $qrCodeData);

    // 6. 更新用户二维码字段
    $user->qr_code = $filePath;
    $user->save();

    return $filePath;
}

最后生成正常

logo路径需要是绝对路径。

代码如下:

php 复制代码
// 设置logo
$qrCode->setLogoSize(60, 60);
$qrCode->setLogoPath(local_url($user['avatar']));

还可以设置背景颜色比较简单不做演示了。

总结

在使用endroid/qr-code 生成二维码报错及解决处理的笔记

相关推荐
4SAPI6 小时前
大模型 API 聚合平台选型指南:企业与个人用户的接入架构、稳定性与成本评估
人工智能·php·agent
PHP实战开发录6 小时前
PHP Session为什么会拖慢并发请求
系统架构·php·开发
闲云野鹤在人间1 天前
docker 入门 | 第5章 网络详解
网络·docker·架构·华为云·php
PHP实战开发录1 天前
MySQL连接数为什么会打满
系统架构·php·开发
VXbishe1 天前
【课程设计】基于SpringBoot的乡村政务服务系统的设计与实现-计算机毕设77011
javascript·vue.js·spring boot·python·php·课程设计·政务
aixingpan1 天前
aixingpan.cn API开发文档:api_docs_bichart_natalvssolar_return2接口指南
前端·php
曦夜日长1 天前
Linux系统篇,进程概念(四):内核链表的深度理解、进程优先级的底层理解
linux·运维·服务器·php
4SAPI2 天前
企业大模型API服务商推荐:从多模型接入到AI API Gateway的技术选型分析
人工智能·php
子非鱼a2 天前
【WEB】[NewStarCTF 2023 公开赛道]include 0。0
php
DevUp2 天前
停更老站往哪搬:PHP 老站的五条出路(番外七)
php·cms