我们在开发过程中经常需要安装一些扩展工具来方便我们开发,下面介绍一下php扩展的安装方法
【php扩展的用途及优势】
如想让php支持某项新的功能,或者支持另外服务或库(如某一天,有人开发了一个新的数据库,叫newsql,则需要php支持对newsql服务的调用),我们就需要以扩展程序的形式将该功能或服务的php扩展安装并集成到php中;如想让扩展生效,则直接在php.ini中加载对应配置,并重启服务让扩展生效即可;下面我们主要讲讲在linux操作系统中,如何安装php扩展。
【如何确定某项扩展是否已经安装】
如果是基于web的php程序,需要依赖某个扩展;那我们可以直接在网页中运行phpinfo页,然后查看是否有对应模块,其中对应的php.ini文件的位置也可以在phpinfo的页面上看到;
如果是基于cli的php程序,直接在命令行控制台输入 ./php -m 命令来查看是否已包含某项扩展;对应的php.ini 文件的位置我们也可以通过运用命令 ./php --ini 来查看到,见 Loaded Configuration File:一项;
【如何获取扩展源码及安装】
如果确定自己的php没有某个扩展,并需要安装时,第一步就是获取到该扩展的源码,那可以用以下方法获取对应的扩展的源码;
可以直接下载php的源码,然后进入到php源码的./ext子目录下,寻找是否已包含您准备安装的扩展的源码,也许./ext子目录下已经有您需要的扩展的源码了,如我的php源码及ext目录见:/usr/local/src/php/php-7.3.1/ext,如果我想安装pcntl扩展,则可以直接在./ext子目录下找到;
然后则直接进入到对应扩展的源码目录下,然后用正常的步骤编译安装步骤安装即可,编译安装详见下述第5项;
或者直接取php扩展官网下载对应扩展源码(http://pecl.php.net/)
然后用正常的编译安装步骤安装即可,编译安装详见下述第5项;
网上说还可以直接用apt或yum命令安装;如果是debian系列的系统,则直接用apt-get安装,如
如果是centos系统,则直接用yum安装;如我想安装memcached服务对应的扩展,则直接运行,这种方式我自己没有试过,大家感兴趣可以试试:
yum install -y php-pecl-memcached
不过这种方式不是很推荐,在安装前先查看自己的php版本;这种方式yum可能会同时安装其他版本的php
自己开发扩展源码,除了自己项目用以为,如果您开发的扩展程序足够优秀,可以提交到开源社区,如github;或者可以提交给pecl官方;
【用pecl 命令直接安装】
如我的php编译安装后的位置是:
[root@wzxaini9 bin]# pwd /usr/local/php/bin
我们可以在这个目录下直接用pecl工具安装,
[root@wzxaini9 bin]# ./pecl install grpc
接下来静静等待吧,安装程序会自动下载,编译程序,安装成功后,会提示:
...... Build complete. Don't forget to run 'make test'. running: make INSTALL_ROOT="/tmp/pear/temp/pear-build-rootlimRRa/install-grpc-1.21.3" install Installing shared extensions: /tmp/pear/temp/pear-build-rootlimRRa/install-grpc-1.21.3/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/ running: find "/tmp/pear/temp/pear-build-rootlimRRa/install-grpc-1.21.3" | xargs ls -dils 402754 4 drwxr-xr-x 3 root root 4096 Jun 24 11:48 /tmp/pear/temp/pear-build-rootlimRRa/install-grpc-1.21.3 409636 4 drwxr-xr-x 3 root root 4096 Jun 24 11:48 /tmp/pear/temp/pear-build-rootlimRRa/install-grpc-1.21.3/usr 409637 4 drwxr-xr-x 3 root root 4096 Jun 24 11:48 /tmp/pear/temp/pear-build-rootlimRRa/install-grpc-1.21.3/usr/local 409638 4 drwxr-xr-x 3 root root 4096 Jun 24 11:48 /tmp/pear/temp/pear-build-rootlimRRa/install-grpc-1.21.3/usr/local/php 409639 4 drwxr-xr-x 3 root root 4096 Jun 24 11:48 /tmp/pear/temp/pear-build-rootlimRRa/install-grpc-1.21.3/usr/local/php/lib 409640 4 drwxr-xr-x 3 root root 4096 Jun 24 11:48 /tmp/pear/temp/pear-build-rootlimRRa/install-grpc-1.21.3/usr/local/php/lib/php 409641 4 drwxr-xr-x 3 root root 4096 Jun 24 11:48 /tmp/pear/temp/pear-build-rootlimRRa/install-grpc-1.21.3/usr/local/php/lib/php/extensions 409642 4 drwxr-xr-x 2 root root 4096 Jun 24 11:48 /tmp/pear/temp/pear-build-rootlimRRa/install-grpc-1.21.3/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303 403628 24720 -rwxr-xr-x 1 root root 25312360 Jun 24 11:48 /tmp/pear/temp/pear-build-rootlimRRa/install-grpc-1.21.3/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/grpc.so Build process completed successfully Installing '/usr/local/php/lib/php/extensions/no-debug-non-zts-20160303/grpc.so' install ok: channel://pecl.php.net/grpc-1.21.3 Extension grpc enabled in php.ini
然后重启服务,然后重新查看phpinfo页:
【编译安装】
下载与php所对应版本的redis扩展
[root@wzxaini9 ~]# wget https://pecl.php.net/get/redis-4.3.0.tgz --2019-06-24 12:14:11-- https://pecl.php.net/get/redis-4.3.0.tgz Resolving pecl.php.net (pecl.php.net)... 104.236.228.160 Connecting to pecl.php.net (pecl.php.net)|104.236.228.160|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 241883 (236K) [application/octet-stream] Saving to: ‘redis-4.3.0.tgz’ 100%[======================================>] 241,883 17.7KB/s in 13s 2019-06-24 12:14:26 (17.7 KB/s) - ‘redis-4.3.0.tgz’ saved [241883/241883] [root@wzxaini9 ~]# tar -zxvf redis-4.3.0.tgz ......
使用phpize动态编译一下安装文件
[root@wzxaini9 redis-4.3.0]# /usr/local/php/bin/phpize Configuring for: PHP Api Version: 20160303 Zend Module Api No: 20160303 Zend Extension Api No: 320160303
完成后使用当前php配置设置文件的安装路径
[root@wzxaini9 redis-4.3.0]# ./configure --with-php-config=/usr/local/php/bin/php-config
编译安装
[root@wzxaini9 redis-4.3.0]# make && make install
编译完毕后提示 Installing shared extensions: /opt/server/php/lib/php/extensions/no-debug-non-zts-20170718/
然后进入扩展.so文件目录 cd /opt/server/php/lib/php/extensions/no-debug-non-zts-20170718/ ,可看 redis.so 文件
然后修改php.ini ,增加扩展目录位置的配置:
extension_dir = "/opt/server/php/lib/php/extensions/no-debug-non-zts-20170718/" (如果已有,则修改所在目录即可)
然后增加刚才扩展的名称;
extension=redis.so
重启 php-fpm 然后查看phpinfo页:
登录后可发表评论
07月08日 11:58