今日应开发需求,想要显示图片的属性信息,于是度娘就告知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精品交流群
-
- 微信公众号
-