PHP扩展安装


我们在开发过程中经常需要安装一些扩展工具来方便我们开发,下面介绍一下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页:

image.png


【编译安装】

    下载与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页:

image.png

上一篇 下一篇

评论

登录后可发表评论


whison:
07月08日 11:58
你们都在我身边我