![To the world you may be one person, but to one person you may be the world! To the world you may be one person, but to one person you may be the world!](/2017/04/26/php-安装和开启外部扩展库/5.jpg)
php 安装和开启外部扩展库
不得不说,由于php的扩展问题,我在安装和运行php相关项目的时候遇到了很多的坑。例如之前搭建php的Laravel
框架,以及最近搭建的 phpmyadmin项目,都遇到了不少缺少库的问题:由于缺少像openssl
、mysqli
、postgres
等外部扩展库,导致程序不能正常运行。但是我们项目通常用到的php是已经编译好的,而且服务器上的安装包的外部扩展不是很全。所以不能通过重新编译php的办法来解决这个问题,且重新编译的话可能导致其他很多的问题。
检测扩展
首先检查下扩展有没有加载,如果已经加载了,那基本是99%的可能性确定问题不是出现在扩展库这个地方了。
phpinfo()
利用phpinfo()
这个方法可以查看当前安装的php包含的扩展有哪些。
bugfixed
在安装的时候我遇到了一个很难发现的bug: 在linux端通过php -m
命令,我看到了一些我已经安装的扩展,但是在浏览器端通过phpinfo()
方法,却发现缺少很多已经安装的库。后来找到原因,Apache
中配置的php.ini
的位置不对。如果出现类似的问题,不妨检查下Apache
根目录下conf
文件夹中的http.conf
的配置是否正确
安装和开启
废话辣么多,终于可以开始说正题了。windows环境新增外部扩展的方法请参考php开启openssl的方法,openssl安装。本文主要介绍linux centos7
的安装方法。
php版本: php-5.6.4
这个地方由于我们服务器上的安装包内的文件不是很全,官网上下载也不是很方便,所以这个地方推荐用搜狐的镜像来下载。地址为:http://mirrors.sohu.com/php/
首先,进入到我们的主机:
# 下载对应的php到/opt/php目录下
cd /opt/php
wget http://mirrors.sohu.com/php/php-5.6.4.tar.gz
# 解压
tar zxvf php-5.6.4.tar.gz
# 进入PHP的openssl扩展模块目录
cd php-5.6.4/ext/openssl/
/opt/php/bin/phpize # 这里为你自己的phpize路径,如果找不到,使用whereis phpize查找
# 执行后,发现错误 无法找到config.m4 ,config0.m4就是config.m4。直接重命名
mv config0.m4 config.m4
/opt/php/bin/phpize
./configure --with-openssl --with-php-config=/opt/php/bin/php-config
make
make install
# 安装完成后,会返回一个.so文件(openssl.so)的目录。在此目录下把openssl.so 文件拷贝到你在php.ini 中指定的 extension_dir 下(在php.ini文件中查找:extension_dir =),我这里的目录是 var/www/php5/lib/php/extensions
# 编辑php.ini文件,在文件最后添加
extension=openssl.so
# 重启Apache即可
/opt/apache2/bin/httpd restart