Laravel中使用phpqrcode库报错:Class 'QRcode' not found
解决Laravel中调用QRcode类提示"Class 'QRcode' not found"的问题
以下是几种可行的解决办法:
方法一:直接在控制器中引入类文件
你代码里已经写了引入语句但注释掉了,取消注释即可,确保文件路径与实际存放位置一致:
public function store(Request $request) { $input = $request->all(); // 确保qrlib.php的路径正确,根据实际存放位置调整 include(app_path().'/phpqrcode/qrlib.php'); $code = $request->email ; $filename ='test' . md5($code) . '.png'; QRcode::png($code, \public_path("temp/$filename")); $input['qr_code']= $filename; Participant::create($input); return response()->json(['status'=>'success','message'=>'participant saved succefully !' ],201); }
方法二:通过Composer自动加载类文件
这种方法无需每次在控制器里手动引入,更符合Laravel的自动加载规范:
- 打开项目根目录下的
composer.json文件,找到autoload节点,添加files配置:
"autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" }, "files": [ "app/phpqrcode/qrlib.php" ] }
- 在终端运行以下命令更新自动加载规则:
composer dump-autoload
之后就可以直接在控制器里调用QRcode::png(),无需手动引入文件。
方法三:使用Composer安装适配Laravel的二维码包(推荐)
原生phpqrcode是无命名空间的老库,适配Laravel不如专门的包方便,推荐使用endroid/qr-code:
- 安装包:
composer require endroid/qr-code
- 控制器中生成二维码的示例代码:
use Endroid\QrCode\QrCode; use Endroid\QrCode\Writer\PngWriter; public function store(Request $request) { $input = $request->all(); $code = $request->email; $filename = 'test' . md5($code) . '.png'; $filePath = public_path("temp/$filename"); // 生成二维码 $qrCode = QrCode::create($code); $writer = new PngWriter(); $result = $writer->write($qrCode); $result->saveToFile($filePath); $input['qr_code'] = $filename; Participant::create($input); return response()->json(['status'=>'success','message'=>'participant saved succefully !' ],201); }
额外检查项
- 确认
public/temp目录存在,没有的话手动创建,且目录具备写入权限 - 检查phpqrcode的文件是否完整,确保
qrlib.php及相关依赖文件没有缺失
内容的提问来源于stack exchange,提问作者Emrane Klaaï
相关产品推荐
相关产品推荐

