这个问题整整困扰了我两天,今天终于搞定了。记录一下。

背景是这样的,我呢,在centos服务器上安装了lamp环境,其中php是5.3.3,在用composer安装yii2的时候,出现了某些yii2插件需要php7以上才支持。

于是乎,纠结了一下,是改composer.json中的配置,适应低版本php还是升级php呢?最后的决定是升级php到7。

在apache同一级目录下新建了个php7文件夹,详见前面这篇《升级lamp中php5.6到php7.0过程》。

安装好之后,yii2顺利部署调试好。

然后开发了上传banner图的模块。当测试上传的时候遇到问题了,提示php fileinfo extension must be installed。

围绕这个问题查了很多网络上的资料,最后得出的结论就是php没有加载fileinfo这个扩展,或者没有安装这个扩展,或者php.ini没有开启这个扩展

find / -name fileinfo.so 发现这个扩展是有的,然后就使用服务器上原有的fileinfo.so进行安装,结果不行。

后来查了资料说是要在安装包文件ext/fileinfo底下进行编译安装。

于是去尝试,中间还使用了pecl安装,这种方法貌似已经废弃了。不可避免的经历了安装pecl的过程。为了满足在安装包底下安装的需求,我重新下载了php7安装包,记得好像是从香港那个镜像服务器下载的,先下载到本地,然后上传到服务器,新建tmp文件夹,解压,进入ext/fileinfo文件夹。

最后回到大多数人提到的phpize安装方法,步骤简单。

过程如下,

phpize,由于服务器存在两个php,一个5.3.3,一个7.0.2的,因此在运行phpize命令的时候,显示的是2009版,版本低,因此在重新编译安装php7之后,添加了一个别名alias php=/usr/local/php7/bin/phpize,此时显示的是2015了,这一步ok了。

在ext/phpize文件夹下运行phpize。

然后运行./configure --with-php-config=/usr/local/php7/bin/php-config --enable-fileinfo(这个是看有些人加了,因为怀疑可能是被禁用所以也给加上了)。

运行完毕,这中间是一个配置的shell脚本。有可能出错,如果出错不被发现继续下一步,编译安装不成功,还是无法正常运行的。

运行完毕,运行make & make install,如果前面有过make的经历,还需要make clean一下,不然还是不能成功。如此完毕,正常的话,最后一步make test就可以使用了。

在这一步从phpize到最后,尝试了不下十遍,最终通过php -m查的扩展总是没增加,而且通过php -i | grep php.ini,当然在php.ini中要加入extension=fileinfo.so,另外中间还提示system以及另外一个函数被禁用,在php.ini当中把禁用函数删掉即可。

disable_functions = exec,chroot,chgrp,chown,proc_get_status,ini_alter,ini_alter,ini_restore

而且提示动态库加载失败,因为有一个变量未定义。其实还是因为编译安装这个扩展中间出了错导致的。因此保证编译安装绝对无误,就不会存在任何问题。

文字写的零碎,的确是因为初学,各种问题零零碎碎,无法很好的总结,踩过的坑记下,另外回顾一下加深印象。

最新文章

  1. java 垃圾回收
  2. poj1157LITTLE SHOP OF FLOWERS
  3. [多校联考2 T3] 排列 (DP)
  4. html css一些记录
  5. WebStorm 8 注册码
  6. poj 2594 传递闭包+最大路径覆盖
  7. SQL开发利器SQL Prompt
  8. HTML document对象(2)
  9. sqoop导入hdfs上的数据到oracle
  10. Python常用网页字符串处理技巧
  11. Codeforces Round #271 (Div. 2) E题 Pillars(线段树维护DP)
  12. IntelliJ idea学习资源
  13. Deming管理系列(2)——怎样开发度量能力
  14. C#面试题整理(1)
  15. Spring介绍
  16. php-fpm 的优化
  17. Error: spawn Unknown system errno 203
  18. jQuery(六)
  19. Linux 使用tty0 显示10分钟自动关闭功能
  20. java课程设计-坦克大战

热门文章

  1. Android 开发工具下载中文网站
  2. iOS 扩展类方法之category!
  3. mysql内外连接
  4. Android Studio快捷键设置之实现原eclipse中ctrl+m的全屏的效果
  5. 6: Junit1_@Test
  6. 语法:c++对关于空指针0/NULL/nullptr三者的演变
  7. Java入门:基础算法之获取用户输入
  8. 在Ubuntu16.04上安装virtualbox后无法装载vboxdrv模块
  9. python的reduce函数的使用方法详解以及使用案例,相加,相乘(处理一个序列,然后把序列进程合并操作)
  10. Java质数求解