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

相关推荐
两个人的幸福9 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo11 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack11 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户30745969820711 天前
PHP 扩展——从入门到理解
php
鹏仔先生12 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下12 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip12 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒13 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog25013 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
Channing Lewis13 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel