全面解读Linux环境中PHP7识别二维码(zbarcode)

PHP识别二维码或条形码需要 3 个工具。

  1. ImageMagick
    ImageMagick 是一个用于查看、编辑位图文件以及进行图像格式转换的开放源代码软件套装。它可以读取、编辑超过 100 种图象格式。ImageMagick 以 ImageMagick 许可证(一个类似 BSD 的许可证)发布。
  2. zbar
    zbar 是一个开源软件套件,用于读取各种来源的条形码,如视频流,图像文件和原始强度传感器。它支持 包括 EAN-13 / UPC-A,UPC-E,EAN-8,Code 128,Code 39,Interleaved 2 of 5 和 QR Code 等多种流行的条码。
  3. php-zbarcode
    php-zbarcode 是 PHP 读取条形码的扩展模块,目前仅支持 php5.x。使用这个模块之前还需要安装 ImageMagick 和 zbar 这两个命令行套件。
    phpzbarcode 依赖于 ImageMagick 和 zbar,zbar 依赖于 ImageMagick,ImageMagick 依赖 jpeg 库来提供 jpeg 图片支持,所以先安装 jpeg 支持。

安装 jpeg 库

//yum安装
#yum install libjpeg
#yum install libjpeg-devel
#yum install libpng
#yum install libpng-devel
#yum install libtiff
#yum install libtiff-devel
#yum install libungif
#yum install libungif-devel
#yum install freetype
#yum install zlib
#pm -qa |grep libjpeg
//二进制安装
#wget http://www.imagemagick.org/download/delegates/jpegsrc.v9b.tar.gz
#tar xf jpegsrc.v9b.tar.gz
#cd jpeg-9b/
#./configure 
#make libdir=/usr/lib64   
#make libdir=/usr/lib64 install  
#rpm -qa |grep libjpeg

安装 ImageMagick

#wget https://www.imagemagick.org/download/ImageMagick.tar.gz
#tar xf ImageMagick.tar.gz
#cd ImageMagick-7.0.7-13
#./configure
#make
#sudo make install
#sudo ldconfig /usr/local/lib
#magick --version

********************************************* 常见错误 *******************************************
出错1:安装好以后使用 magick 、 convert 等相关命令时,加载动态链接库出错
解决方法:设置动态加载动态链接库
sudo ldconfig /usr/local/lib

安装 zbar
下载地址:https://sourceforge.net/projects/zbar/files/zbar/。我下载的最新版 0.10,包名为 zbar-0.10.tar.gz 。

#tar xf zbar-0.10.tar.gz
#cd zbar-0.10/
#sudo ln -s /usr/local/include/ImageMagick-7 /usr/local/include/ImageMagick
#sudo ln -s /usr/local/include/ImageMagick-7/MagickWand /usr/local/include/wand
#./configure --disable-video --without-gtk --without-qt --without-python
#make
#make
#sudo make install
#zbarimg --version

********************************************* 常见错误 ********************************************
出错1:找不到 MagickWand.h 头文件

ImageMagick package found but wand/MagickWand.h not installed?!
-this is a problem with your ImageMagick install,
-please resolve the inconsistency and try again...

解决方法:zbar 的配置文件 ./configure 在运行时会找不到 MagickWand.h,它在 /usr/local/include/ImageMagick-7/MagickWand 目录下,但是 ./configure 执行时会去 wand/ 目录找(找不到),所以需要做两个软连接让 ./configure 能找到 MagickWand.h 文件

#sudo ln -s /usr/local/include/ImageMagick-7 /usr/local/include/ImageMagick
#sudo ln -s /usr/local/include/ImageMagick-7/MagickWand /usr/local/include/wand

出错2:configure: error: Unable to find ImageMagick >= 6.2.6:No package ‘MagickWand’ found
这个错误的原因是cmake找不到imagemagick库,因为你通过apt-get或者yum安装的仅仅是imagemagick,而不包括magickwand的开发包。
解决方案有两个,第一种很简单:
找到libmagickwand-dev这个包进行安装,比如在ubuntu中可以使用以下命令

#sudo apt-get install libmagickwand-dev

如果是centOS的话可能需要自己查找一下类似的包,或者使用方案二。

#sudo yum install ImageMagick-devel

安装对应版本的php-zbarcode扩展,主要看你安装php的版本哟

#wget https://github.com/mkoppanen/php-zbarcode/archive/master.zip
#unzip master.zip
#cd php-zbarcode-master/
#phpize
#./configure --with-php-config=/usr/bin/php-config
#make
#sudo make install

成功后会提示安装到的模块目录

Installing shared extensions:     /usr/lib/php/20131226/

编辑 /etc/php/5.6/apache2/php.ini 文件

sudo vim /etc/php/5.6/apache2/php.ini

最后添加一行

extension=zbarcode.so

重启 apache

sudo /etc/init.d/apache2 restart

这就好了,可以使用条形码扩展了。
注意 php -m 命令显示的是 php-cli 模式启用的扩展,要让 php-cli 模式也启用扩展的话,需要再编辑 cli 模式的配置文件。然后就能使用 php -m 命令看到 zbarcode 模块了。


参考一下他人的劳动成果
WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers
Linux安装ImageMagick与JMagick完成过程及配置
Cmake时报错:Could NOT find ImageMagick
Centos 6.x 上安装php 的 zbarcode 扩展
ImageMagick简明安装部署手册

你可能感兴趣的:(php,Linux)