阿里云ECS服务器配置LAMP时安装配置PHP扩展填坑(三)

阿里云ECS服务器配置LAMP时安装配置PHP扩展填坑(三)

apache+mysql配置完成、问题解决后,接下来就是安装配置PHP了,按照阿里云官方lamp配置文档(https://help.aliyun.com/document_detail/50774.html)正常安装一般是没有问题的(建议安装配置编译PHP的时候加上--with-gd \),但是,无论进行什么操作都会有warnning类型的提示,提示如下图:
阿里云ECS服务器配置LAMP时安装配置PHP扩展填坑(三)
出现这样的错误是因为,PHP缺少curl、fileinfo、json、mcrypt、phar、zip(可能还会有pdo)这几个扩展,下面提供解决方案:
以安装fileinfo为例,其他几个扩展跟安装fileinfo扩展步骤相同、内容相同,只是扩展名字不同。
第一步:找到fileinfo扩展所在位置:
使用命令:find / -name fileinfo
查找解果:/root/php-7.0.12/ext/fileinfo
进入fileinfo扩展所在目录:cd /root/php-7.0.12/ext/fileinfo
那么,也就基本确定,所有的扩展都在/root/php-7.0.12/ext/下面。
第二步:查找phpize所在位置(phpize就是安装扩展的工具)
使用命令:find / -name phpize
查找结果:/usr/local/php/bin/phpize
第三步:执行下面命令
在扩展目录执行:/usr/local/php/bin/phpize
出现如下结果,说明执行成功:
阿里云ECS服务器配置LAMP时安装配置PHP扩展填坑(三)
第四步:执行下面命令
在扩展目录执行:./configure --with-php-config=/usr/local/php/bin/php-config
出现如下结果,说明执行成功:
阿里云ECS服务器配置LAMP时安装配置PHP扩展填坑(三)
第五步:执行下面命令
在扩展目录执行:make && make install
出现如下结果,说明执行成功:
阿里云ECS服务器配置LAMP时安装配置PHP扩展填坑(三)
第六步:添加扩展到php.ini
执行命令:vim /etc/php.ini
在extension群的下面添加如下内容:
;extension=fileinfo.so
注意:添加的扩展前面需要带英文分号(;),不然会有新的问题出现,具体原因尚未查明,如有童鞋知道,可在评论区留言,感谢。
第七步:查看fileinfo状态
重启Apache之后,刷新浏览器访问的phpinfo()文件,出现如下图所示,说明安装fileinfo扩展成功了:
阿里云ECS服务器配置LAMP时安装配置PHP扩展填坑(三)
如果想要安装其他PHP扩展,继续按照第一步到第七步执行就行了。
执行到所有的扩展执行完毕,到最后再执行php -v的时候又出现了新的错误,错误信息中包含如下内容:
 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-zts-20151012/mcrypt.so' - /usr/local/php/lib/php/extensions/no-debug-zts-20151012/mcrypt.so: undefined symbol: _tsrm_ls_cache in Unknown on line 0
 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-zts-20151012/json.so' - /usr/local/php/lib/php/extensions/no-debug-zts-20151012/json.so: undefined symbol: _tsrm_ls_cache in Unknown on line 0
 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php/lib/php/extensions/no-debug-zts-20151012/phar.so' - /usr/local/php/lib/php/extensions/no-debug-zts-20151012/phar.so: undefined symbol: _tsrm_ls_cache in Unknown on line 0
经过查阅资料(https://github.com/yaoguais/phpng-xhprof/issues/3),这样的错误提示是因为安装的PHP使用了线程安全的机制导致的,本人暂未找到应对办法,如有知道的童鞋,请留言联系,感谢。

既然这条路走不通,那么该怎么办呢,查阅资料(http://www.cnblogs.com/T8881/p/6397264.html)总结后,我决定摒弃线程安全机制,使用非线程安全机制编译安装PHP,那么就需要卸载之前安装的PHP了,卸载过程略过,有需要的童鞋可以去网上找方法,卸载完成后,下面开始重新安装非线程安全的PHP,编译PHP的代码只需要在阿里云文档中删掉 --enable-maintainer-zts \ 即可,同时记得加上--with-gd \ 其余安装配置步骤依照阿里云官方文档继续,,安装配置PHP完成之后,再次执行php -v 不再出现错误提示,即便如此,curl、fileinfo、zip等扩展依然没安装,如果需要继续安装这几个扩展,依照上面的第一步到第七步即可。

如果提示:configure: error: mcrypt.h not found. Please reinstall libmcrypt

解决方案:https://blog.csdn.net/default7/article/details/32312061


这次总算把阿里云服务器ECS安装配置LAMP的坑都填了,经此几战,我认为还是要有足够的耐心应对各种坑,要积极谷歌百度,查找类似解决方案,同时要及时查看错误日志,坚持就是胜利,加油!

==================================>
2017.09.04
如果上述方法都不行,可以尝试在执行第二步之前执行命令:make clean 然后,继续按照步骤执行,也可以解决问题,亲测可用。

******************************只要思想不滑坡,办法总比困难多**************************