php 安装和开启外部扩展库

To the world you may be one person, but to one person you may be the world!

php 安装和开启外部扩展库

不得不说,由于php的扩展问题,我在安装和运行php相关项目的时候遇到了很多的坑。例如之前搭建php的Laravel框架,以及最近搭建的 phpmyadmin项目,都遇到了不少缺少库的问题:由于缺少像opensslmysqlipostgres等外部扩展库,导致程序不能正常运行。但是我们项目通常用到的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
Share Comments