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