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

相关推荐
漏刻有时2 小时前
CentOS 不定时 OOM 根治方案:PHP-FPM 进程管控 + Swap 扩容 + 全维度监控
android·centos·php
CRMEB系统商城2 小时前
CRMEB标准版系统(PHP)v6.0公测版发布,商城主题市场上线~
java·开发语言·小程序·php
沐晨API3 小时前
最新API管理系统
php
牢七4 小时前
Slim-4.x php审计 报错分析
android·开发语言·ide·安全·php
ZHOUPUYU5 小时前
PHP 8.6的底层革命。那些看不见的优化,才是真正的惊喜
开发语言·后端·php
Sammyyyyy5 小时前
如何让 Laravel 应用进化为顶级智能体
ai·php·ai编程·laravel·servbay
JSON_L6 小时前
Fastadmin中实现获取名称首字母
php·fastadmin
vx-程序开发6 小时前
springboot具备推荐和预警机制的大学生兼职平台的设计与实现-计算机毕业设计源码17157
java·c++·spring boot·python·spring·django·php
勿在浮沙筑高台7 小时前
流片和项目有什么区别
php