Centos+PHP模块+exif扩展 (第三方模块)

2018年6月14日15:36:00 发表评论 2,393 views
摘要

本文主要介绍,关于Centos+PHP模块+exif扩展 (第三方模块)的部署。

广告也精彩

今日应开发需求,想要显示图片的属性信息,于是度娘就告知exif模块可以实现,操作步骤与问题总结吐下;

一、php安装扩展的几种方法

安装前注意如下几点:

与Apache+PHP或者Nginx+PHP的运行模式不同
WorkerMan是基于PHP命令行 PHP CLI 运行的,使用的是不同的PHP可执行程序,使用的php.ini文件也可能不同。
所以在网页中打印phpinfo()看到安装了某个扩展,不代表命令行的PHP CLI也安装了对应的扩展。

1、如何确定PHP CLI安装了哪些扩展

运行 php -m 会列出命令行 PHP CLI 已经安装的扩展,结果类似如下:

~# php -m
[PHP Modules]
libevent
posix
pcntl
...

2、如何确定PHP CLI 的php.ini文件的位置

当我们安装扩展时,可能需要手动配置php.ini文件,把扩展加进去,所以要确认PHP CLI的php.ini文件的位置。可以运行php --ini查找PHP CLI的ini文件位置,结果类似如下(各个系统显示结果会有差异):

~# php --ini
Configuration File (php.ini) Path: /etc/php5/cli
Loaded Configuration File:         /etc/php5/cli/php.ini
Scan for additional .ini files in: /etc/php5/cli/conf.d
Additional .ini files parsed:      /etc/php5/cli/conf.d/apc.ini,
/etc/php5/cli/conf.d/libevent.ini,
/etc/php5/cli/conf.d/memcached.ini,
/etc/php5/cli/conf.d/mysql.ini,
/etc/php5/cli/conf.d/pdo.ini,
/etc/php5/cli/conf.d/pdo_mysql.ini
...

3、给Php Cli安装扩展(安装Memcached扩展为例)

方法一、使用apt或者yum命令安装

如果PHP是通过 apt 或者 yum 命令安装的,则扩展也可以通过 apt 或者 yum 安装

debian/ubuntu等系统apt安装PHP扩展方法(非root用户需要加sudo命令)

"1、利用apt-cache search查找扩展包"

~# apt-cache search memcached php
php-apc - APC (Alternative PHP Cache) module for PHP 5
php5-memcached - memcached module for php5
"2、使用apt-get install安装扩展包"

# apt-get install -y php5-memcached
Reading package lists... Done
Reading state information... Done

Centos等系统Yum安装Php扩展方法

"1、利用yum search查找扩展包"

~# yum search memcached php
php-pecl-memcached - memcached module for php5
"2、使用yum install安装扩展包"

~# yum install -y php-pecl-memcached
Reading package lists... Done
Reading state information... Done
...
说明:

使用apt或者yum安装PHP扩展会自动配置php.ini文件,安装完直接可用,十分方便。缺点是有些扩展在apt或者yum中没有对应的扩展安装包。

方法二、使用pecl安装

使用pecl install命令安装扩展

1、pecl install安装

~# pecl install memcached
downloading memcached-2.2.0.tgz ...
Starting to download memcached-2.2.0.tgz (70,449 bytes)
....

方法三、使用phpzip安装模块

1、环境介绍

[root@ghzz ~]# cat /etc/redhat-release 
CentOS release 6.5 (Final)
You have new mail in /var/spool/mail/root
[root@ghzz ~]# php -v
Zend Guard Loader requires Zend Engine API version 220121212.
The Zend Engine API version 220131226 which is installed, is newer.
Contact Zend Technologies at http://www.zend.com/ for a later version of Zend Guard Loader.
PHP 5.6.14 (cli) (built: Jul  7 2016 12:43:11) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

2、查找模块

方法一:去php安装路径下ext目录下都是模块

cd /root/software/php-5.6.14/ext/exif

如果找不到 find ./ -type d -name "php*" 去查找
###这个模块,应该是php安装包内自带的,但是./configure编译安装的时候没有加载的包

方法二:php官网

PHP官网地址:http://pecl.php.net/packages.php

3、编译安装 (加载模块)

1)进入php存储模块目录

[root@ghzz lsolesen-pel-56d1b7f]# cd /root/software/php-5.6.14/ext/exif  ##测试环境
##如果找不到 find ./ -type f -name "php-*" 去查找
[root@ghzz exif]# ll
总用量 196
-rw-r--r-- 1 1000 1000    333 9月  30 2015 config.m4
-rw-r--r-- 1 1000 1000    308 9月  30 2015 config.w32
-rw-r--r-- 1 1000 1000     36 9月  30 2015 CREDITS
-rw-r--r-- 1 1000 1000    496 9月  30 2015 example.php
-rw-r--r-- 1 1000 1000 145331 9月  30 2015 exif.c
-rw-r--r-- 1 1000 1000   4933 9月  30 2015 exif.dsp
-rw-r--r-- 1 1000 1000   1953 9月  30 2015 package.xml
-rw-r--r-- 1 1000 1000   1463 9月  30 2015 php_exif.h
-rw-r--r-- 1 1000 1000     29 9月  30 2015 test.php
drwxr-xr-x 2 1000 1000   4096 9月  30 2015 tests
-rw-r--r-- 1 1000 1000  11232 9月  30 2015 test.txt

2)使用phpize添加php动态模块

作用:使用phpize生成

[root@ghzz exif]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
[root@ghzz exif]# ./configure -with-php-config=/usr/local/php/bin/php-config
checking for grep that handles long lines and -e... /bin/grep
#。。。省略若干字段

3)使用make进行编辑安装

[root@ghzz exif]# make && make install
#。。。省略若干字段
creating exif.la
PATH="$PATH:/sbin" ldconfig -n /root/software/php-5.6.14/ext/exif/modules
----------------------------------------------------------------------

   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------

Build complete.
Don't forget to run 'make test'.

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/
[root@ghzz exif]# vi /usr/local/php/etc/php.ini
##如果文件路径不存在,就去安装目录查找php.ini文件
查找:extension = 再最后一个extension= 后面添加上extension = “exif.so”
[root@ghzz ext]# grep -n  "exif.so" /usr/local/php/etc/php.ini 
743:extension = "exif.so"
[root@ghzz exif]# /etc/init.d/php-fpm restart   ##重启加载php模块

4、此时可能出现模块加载报错

Gracefully shutting down php-fpm . done
Starting php-fpm [06-Jan-2017 13:43:43] NOTICE: PHP message: PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) ‘fileinfo.so’ in Unknown on line 0

重新执行上面的操作还是一直报这个错误
解决方法:
到你的模块安装目录,我这里是:

cd  /****/soft/lnmp1.2-full/src/php-5.6.14/ext/exif
make clean

在重新执行上面的全部命令,安装就成功了

报错原因:

因为之前编译的库文件.so存在异常,所以没有将新的写入,有冲突,需要清空后重新编译,即可启动

4、检查模块运行情况及效果

[root@ghzz ext]# php -m|grep exif
exif

至此php exif模块安装加载成功。

  • QQ精品交流群
  • weinxin
  • 微信公众号
  • weinxin
广告也精彩
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: