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 生成二维码报错及解决处理的笔记

相关推荐
&&Citrus4 小时前
【CPN学习笔记(二)】Chap2 非分层颜色 Petri 网——从一个简单协议开始读懂 CPN
笔记·学习·php·cpn·petri网
Xudde.10 小时前
班级作业笔记报告0x10
笔记·学习·安全·web安全·php
我叫黑大帅12 小时前
PHP中的官方操作数据库PDO
后端·面试·php
Zzj_tju12 小时前
Java 从入门到精通(十二):File 与 IO 流基础,为什么程序“读写文件”时总是容易出问题?
java·python·php
流觞 无依15 小时前
DedeCMS 前台任意用户密码修改漏洞(CNVD-2018-0109)修复教程
php·dede漏洞
枫叶林FYL16 小时前
【自然语言处理 NLP】前沿架构与多模态 6.1.2 专家混合模型(Mixture of Experts, MoE)
开发语言·php
电商API&Tina16 小时前
跨境电商如何接入1688官方寻源通接口?附接入流程
java·数据库·python·sql·oracle·json·php
jwn99917 小时前
Laravel11.x新特性全解析
android·开发语言·php·laravel
CDN36018 小时前
弱网下游戏盾掉线重连失败?链路保活与超时参数优化
开发语言·游戏·php
cch891818 小时前
PHP爬虫框架大比拼
开发语言·爬虫·php