紧接着上篇文章:PHP通过Orientation判断图像是否需要旋转
在使用时 php报出如下错误: Call to undefined function gemvary\exif_imagetype()
好吧,exif扩展没安装...
通过 打印phpinfo() 查看得知 mbstring 扩展是有的,exif扩展没有
如果mbstring也没有,也可以参考以下exif扩展的安装过程;
安装过程基本类似的;
进入主题:
1、查看当前环境PHP的版本号和安装目录
whereis php 结果: [root@xiaojun exif]# whereis php php: /usr/bin/php /usr/lib64/php /etc/php.d /etc/php.ini /usr/include/php /usr/local/php /usr/share/php /usr/local/php/bin/php /usr/share/man/man1/php.1.gz [root@xiaojun exif]# /usr/local/php/bin/php -v PHP 7.1.7 (cli) (built: Mar 16 2018 11:06:26) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
那么phpize的位置就是 /usr/local/php/bin/phpize
2、进入php的源码目录
#这是我电脑上的路径,得改成自己服务器上的路径 cd /www/lnmp1.4/src/php-7.1.7/ext/exif
进入扩展目录后进行初始化:
/usr/local/php/bin/phpize
命令执行后当前目录会多几个文件,只要有 configure 这个文件就行
然后再检查配置,输入:
./configure --with-php-config=/usr/local/php/bin/php-config
如果有报错说明路径不对,使用 whereis php-config 查看服务器上此文件的路径
接下来再依次执行这两个命令:
make make install
执行完会有类似如下信息:
[root@xiaojun exif]# make install Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/
这个目录就是扩展安装后的存放目录;
3、修改php.ini引入扩展
vi /usr/local/php/etc/php.ini
在最后面加入:
extension=exif.so
然后保存,重启PHP就完事了;
需要注意的是 exif.so 必须放在 mbstring.so 的后面,否则会出错;
可能出现的问题:
重启PHP时提示: NOTICE: PHP message: PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
意思是mbstring这个扩展已经加载过了,还尝试引入;
解决办法:
PHP加载模块有两种方式,一种是通过php.ini 加载模块,另一种是通过编译时的参数加载模块。
这里出这个提示,那么mbstring应该就是属于后者,只需要php.ini中将其注释掉就行了
;extension=mbstring.so
输入/usr/local/bin/phpize后提示: Cannot find config.m4. Make sure that you run /usr/local/bin/phpize in the top level sourc
我是将openssl扩展内的config0.m4文件改成config.m4就没提示了;
cd ../openssl cp ./config0.m4 ./config.m4
至于为什么openssl扩展的config.m4为什么会影响到安装其它扩展,暂不得而知;
结尾附上PHP的下载地址: https://www.php.net/downloads.php