侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

如何安装PHP7及其扩展?

php  /  管理员 发布于 7年前   295

如何安装PHP7及其扩展?下面本篇文章给大家介绍一下编译安装PHP7及其扩展的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

一、编译安装PHP

1. 下载源码包并解压

源码包地址:http://php.net/downloads.php

下载源码包

当前PHP最新本门是7.2.9,下载 php-7.2.9 源码包

wget http://be2.php.net/get/php-7.2.9.tar.gz/from/this/mirror -O php-7.2.9.tar.gz

解压源码包

解压缩

tar zxf php-7.2.9.tar.gz

进入解压缩后的目录,查看解压的文件

[root/usr/local/src/php-7.2.9]# ll总用量 4.1M-rw-rw-r--  1 root root  84K 8月  14 14:26 acinclude.m4-rw-r--r--  1 root root 309K 8月  14 14:26 aclocal.m4drwxrwxr-x  2 root root   78 8月  14 14:26 appveyor/-rw-rw-r--  1 root root 1.4K 8月  14 14:26 .appveyor.ymldrwxrwxr-x  2 root root 4.0K 8月  14 14:26 build/-rwxrwxr-x  1 root root  772 8月  14 14:26 buildconf*-rw-rw-r--  1 root root  334 8月  14 14:26 buildconf.bat-rw-rw-r--  1 root root  12K 8月  14 14:26 CODING_STANDARDS-rw-rw-r--  1 root root  42K 8月  14 14:26 config.guess-rw-rw-r--  1 root root  36K 8月  14 14:26 config.sub-rwxr-xr-x  1 root root 2.6M 8月  14 14:26 configure*-rw-rw-r--  1 root root  46K 8月  14 14:26 configure.ac-rw-rw-r--  1 root root 3.4K 8月  14 14:26 CONTRIBUTING.md-rw-rw-r--  1 root root   91 8月  14 14:26 CREDITS-rw-rw-r--  1 root root  867 8月  14 14:26 .editorconfigdrwxrwxr-x 76 root root 4.0K 8月  14 14:26 ext/-rw-rw-r--  1 root root  21K 8月  14 14:26 EXTENSIONS-rw-rw-r--  1 root root  137 8月  14 14:26 footer-rw-rw-r--  1 root root  13K 8月  14 14:26 .gdbinit-rw-r--r--  1 root root 1.8K 8月  14 14:26 generated_lists-rwxrwxr-x  1 root root  581 8月  14 14:26 genfiles*-rw-rw-r--  1 root root 8.7K 8月  14 14:26 .gitattributes-rw-rw-r--  1 root root 4.3K 8月  14 14:26 .gitignore-rw-rw-r--  1 root root 1.2K 8月  14 14:26 header-rw-rw-r--  1 root root  86K 8月  14 14:26 INSTALL-rw-r--r--  1 root root    0 8月  14 14:26 install-sh-rw-rw-r--  1 root root 3.2K 8月  14 14:26 LICENSE-rw-rw-r--  1 root root 196K 8月  14 14:26 ltmain.shdrwxrwxr-x  3 root root 4.0K 8月  14 14:26 main/-rwxrwxr-x  1 root root 4.1K 8月  14 14:26 makedist*-rw-rw-r--  1 root root 1.1K 8月  14 14:26 Makefile.frag-rw-rw-r--  1 root root 2.5K 8月  14 14:26 Makefile.gcov-rw-rw-r--  1 root root 7.0K 8月  14 14:26 Makefile.global-rw-r--r--  1 root root    0 8月  14 14:26 missing-rw-r--r--  1 root root    0 8月  14 14:26 mkinstalldirs-rw-rw-r--  1 root root  90K 8月  14 14:26 NEWSdrwxrwxr-x  2 root root   96 8月  14 14:26 pear/-rw-rw-r--  1 root root 1.5K 8月  14 14:26 php7.spec.in-rw-rw-r--  1 root root 2.5K 8月  14 14:26 php.gif-rw-rw-r--  1 root root  69K 8月  14 14:26 php.ini-development-rw-rw-r--  1 root root  69K 8月  14 14:26 php.ini-production-rw-rw-r--  1 root root 6.9K 8月  14 14:26 README.EXT_SKEL-rw-rw-r--  1 root root 5.0K 8月  14 14:26 README.GIT-RULES-rw-rw-r--  1 root root 5.3K 8月  14 14:26 README.input_filter-rw-rw-r--  1 root root 3.4K 8月  14 14:26 README.MAILINGLIST_RULES-rw-rw-r--  1 root root 1.6K 8月  14 14:26 README.md-rw-rw-r--  1 root root 5.2K 8月  14 14:26 README.NEW-OUTPUT-API-rw-rw-r--  1 root root 7.4K 8月  14 14:26 README.PARAMETER_PARSING_API-rw-rw-r--  1 root root  20K 8月  14 14:26 README.REDIST.BINS-rw-rw-r--  1 root root  15K 8月  14 14:26 README.RELEASE_PROCESS-rw-rw-r--  1 root root 5.0K 8月  14 14:26 README.SELF-CONTAINED-EXTENSIONS-rw-rw-r--  1 root root  15K 8月  14 14:26 README.STREAMS-rw-rw-r--  1 root root 8.0K 8月  14 14:26 README.SUBMITTING_PATCH-rw-rw-r--  1 root root 6.6K 8月  14 14:26 README.TESTING-rw-rw-r--  1 root root 4.9K 8月  14 14:26 README.TESTING2-rw-rw-r--  1 root root 4.2K 8月  14 14:26 README.UNIX-BUILD-SYSTEM-rw-rw-r--  1 root root  115 8月  14 14:26 README.WIN32-BUILD-SYSTEM-rwxrwxr-x  1 root root  84K 8月  14 14:26 run-tests.php*drwxrwxr-x 10 root root  110 8月  14 14:26 sapi/drwxrwxr-x  4 root root   99 8月  14 14:26 scripts/-rwxrwxr-x  1 root root 2.1K 8月  14 14:26 server-tests-config.php*-rwxrwxr-x  1 root root  52K 8月  14 14:26 server-tests.php*-rwxrwxr-x  1 root root  108 8月  14 14:26 snapshot*-rw-rw-r--  1 root root   10 8月  14 14:26 stamp-h.indrwxrwxr-x 10 root root  133 8月  14 14:26 tests/drwxrwxr-x  3 root root   33 8月  14 14:26 travis/-rw-rw-r--  1 root root 1.9K 8月  14 14:26 .travis.ymldrwxrwxr-x  3 root root 4.0K 8月  14 14:26 TSRM/-rw-rw-r--  1 root root  15K 8月  14 14:26 UPGRADING-rw-rw-r--  1 root root 3.3K 8月  14 14:26 UPGRADING.INTERNALS-rwxrwxr-x  1 root root  159 8月  14 14:26 vcsclean*drwxrwxr-x  3 root root 4.0K 8月  14 14:26 win32/drwxrwxr-x  3 root root 8.0K 8月  14 14:26 Zend/

2. 编译安装

首先安装PHP编译安装所必须的软件

[root/usr/local/src/php-7.2.9]# yum -y install gcc gcc++ libxml2-devel libicu-devel

configure指定安装目录,启用fpm

[root/usr/local/src/php-7.2.9]# ./configure --prefix=/usr/local/php7 --enable-fpm

编译安装

[root/usr/local/src/php-7.2.9]# make && make install...省略...Installing shared extensions:     /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/Installing PHP CLI binary:        /usr/local/php7/bin/Installing PHP CLI man page:      /usr/local/php7/php/man/man1/Installing PHP FPM binary:        /usr/local/php7/sbin/Installing PHP FPM defconfig:     /usr/local/php7/etc/Installing PHP FPM man page:      /usr/local/php7/php/man/man8/Installing PHP FPM status page:   /usr/local/php7/php/php/fpm/Installing phpdbg binary:         /usr/local/php7/bin/Installing phpdbg man page:       /usr/local/php7/php/man/man1/Installing PHP CGI binary:        /usr/local/php7/bin/Installing PHP CGI man page:      /usr/local/php7/php/man/man1/Installing build environment:     /usr/local/php7/lib/php/build/Installing header files:          /usr/local/php7/include/php/Installing helper programs:       /usr/local/php7/bin/  program: phpize  program: php-configInstalling man pages: /usr/local/php7/php/man/man1/  page: phpize.1  page: php-config.1Installing PEAR environment:      /usr/local/php7/lib/php/[PEAR] Archive_Tar    - installed: 1.4.3[PEAR] Console_Getopt - installed: 1.4.1[PEAR] Structures_Graph- installed: 1.1.1[PEAR] XML_Util       - installed: 1.4.2[PEAR] PEAR           - installed: 1.10.5Warning! a PEAR user config file already exists from a previous PEAR installation at '/root/.pearrc'. You may probably want to remove it.Wrote PEAR system config file at: /usr/local/php7/etc/pear.confYou may want to add: /usr/local/php7/lib/php to your php.ini include_path/usr/local/src/php-7.2.9/build/shtool install -c ext/phar/phar.phar /usr/local/php7/binln -s -f phar.phar /usr/local/php7/bin/pharInstalling PDO headers:           /usr/local/php7/include/php/ext/pdo/

3. 为php命令建立软链接,加入到环境变量中

[root/usr/local/src/php-7.2.9]# ln -s /usr/local/php7/bin/php /usr/local/bin/php

4. 创建配置文件,并将其复制到正确的位置

查看PHP基本信息

[root/usr/local/src/php-7.2.9]# php -iniphpinfo()PHP Version => 7.2.9System => Linux 10.0.2.15 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64Build Date => Aug 17 2018 09:09:29Configure Command =>  './configure'  '--prefix=/usr/local/php7' '--enable-fpm'Server API => Command Line InterfaceVirtual Directory Support => disabledConfiguration File (php.ini) Path => /usr/local/php7/libLoaded Configuration File => (none)Scan this dir for additional .ini files => (none)Additional .ini files parsed => (none)PHP API => 20170718PHP Extension => 20170718Zend Extension => 320170718Zend Extension Build => API320170718,NTSPHP Extension Build => API20170718,NTS......

将php.ini复制到 Configuration File (php.ini) Path

[root/usr/local/src/php-7.2.9]# cp php.ini-development /usr/local/php7/lib/php.ini

5. 配置php-fpm

为php-fpm命令建立软链接,加入到环境变量中

[root/usr/local/src/php-7.2.9]$ ln -s /usr/local/php7/sbin/php-fpm /usr/local/sbin/php-fpm

复制php配置文件目录下的 php-fpm.conf.default,并重命名为 php-fpm.conf

[root/usr/local/src/php-7.2.9]# cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf

复制php配置文件目录下的 php-fpm.d/www.conf.default,并重命名为 php-fpm.d/www.conf

[root/usr/local/src/php-7.2.9]# cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf

编辑 php-fpm.d/www.conf,设置 php-fpm 模块使用 www-data 用户和 www-data 用户组的身份运行。

vim /usr/local/php7/etc/php-fpm.d/www.confuser = www-datagroup = www-data

需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击

编辑 php.ini,文件中的配置项 cgi.fix_pathinfo 设置为 0 。

[root/usr/local/src/php-7.2.9]# vim /usr/local/php7/lib/php.inicgi.fix_pathinfo=0

启动php-fpm

[root/usr/local/src/php-7.2.9]# php-fpm[root/usr/local/src/php-7.2.9]# ss -tlnp | grep php-fpmLISTEN  0  128  127.0.0.1:9000  *:*  users:(("php-fpm",pid=4689,fd=5),("php-fpm",pid=4688,fd=5),("php-fpm",pid=4687,fd=7))

6. 配置 Nginx 使其支持 PHP 应用

[root/etc/nginx]# vim conf.d/default.confserver {    listen 80;    root /vagrant;    location / {        index  index.php;    }    location ~* \.php$ {        fastcgi_index   index.php;        fastcgi_pass    127.0.0.1:9000;        include       fastcgi_params;        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;    }}

创建 /vagrant/index.php,并填入 <?="Hello world!";

[root/etc/nginx]# echo '<?="Hello world!";' > /vagrant/index.php[root/etc/nginx]# cat /vagrant/index.php<?="Hello world!";

启动nginx

[root/etc/nginx]# nginx[root/etc/nginx]# ss -tlnp | grep nginxLISTEN  0  128  *:80  *:*  users:(("nginx",pid=4725,fd=6),("nginx",pid=4724,fd=6))

7. 访问 curl localhost,输出 Hello world!,说明PHP + Nginx安装成功

[root/etc/nginx]# curl localhostHello world!

二、编译安装PHP扩展

1. php扩展安装流程

从 pecl.php.net 查找需要的扩展

选择扩展的版本(注意查看扩展版本与PHP版本的兼容性)

解压缩下载的文件

判断文件的安装类型

> 直装:(解压出来就是 .so 文件),直接复制文件到扩展目录,在php.ini中开启相应的扩展即可> 编译安装:需要先进行编译,再复制文件到扩展目录,在php.ini中开启相应的扩展

2. 编译安装步骤

在解压缩的扩展目录下执行phpize

若 phpize 没有加入到环境变量,则需要使用绝对路径。例如 /usr/local/php7/bin/phpize。
phpize是用来扩展php扩展模块的。
通过phpize可以建立php的外挂模块。

configure 配置编译参数

主要是配置php配置文件参数,例如:

./configure --with-php-config=/usr/local/php7/bin/php-config

若配置编译参数执行过程中出现错误,则需要安装 autoconf。
autoconf可以自动地配置软件源代码。

contos/redhat:yum install autoconf
ubuntu:apt-get install autoconf

编译安装

make && make install

复制 .so 扩展文件到PHP扩展目录(若已经自动复制,则忽略)

在php.ini中开启扩展,配置相应的扩展参数

3. 安装redis扩展实例

php -m查看已安装的php扩展

[root/usr/local/src/php-7.2.9]# php -m[PHP Modules]CorectypedatedomfileinfofilterhashiconvjsonlibxmlpcrePDOpdo_sqlitePharposixReflectionsessionSimpleXMLSPLsqlite3standardtokenizerxmlxmlreaderxmlwriter[Zend Modules]

从 pecl.php.net 下载 redis-4.1.1 扩展,并解压缩

[root/usr/local/src]# wget https://pecl.php.net/get/redis-4.1.1.tgz--2018-08-17 10:00:41--  https://pecl.php.net/get/redis-4.1.1.tgz正在解析主机 pecl.php.net (pecl.php.net)... 104.236.228.160正在连接 pecl.php.net (pecl.php.net)|104.236.228.160|:443... 已连接。已发出 HTTP 请求,正在等待回应... 200 OK长度:220894 (216K) [application/octet-stream]正在保存至: “redis-4.1.1.tgz”100%[========================================================================================================================================================================>] 220,894      192KB/s 用时 1.1s2018-08-17 10:00:44 (192 KB/s) - 已保存 “redis-4.1.1.tgz” [220894/220894])[root/usr/local/src]# tar zxf redis-4.1.1.tgz[root/usr/local/src]# cd redis-4.1.1

在解压缩的扩展目录下执行phpize

[root/usr/local/src/redis-4.1.1]# /usr/local/php7/bin/phpizeConfiguring for:PHP Api Version:         20170718Zend Module Api No:      20170718Zend Extension Api No:   320170718

configure 配置编译参数

[root/usr/local/src/redis-4.1.1]# ./configure --with-php-config=/usr/local/php7/bin/php-config

编译安装

[root/usr/local/src/redis-4.1.1]# make && make install

查看编译好的扩展文件 redis.so,已经自动复制到php扩展目录下

[root/usr/local/src/redis-4.1.1]# ll /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/总用量 7.1M-rwxr-xr-x 1 root root 3.5M 8月  17 09:15 opcache.a*-rwxr-xr-x 1 root root 1.9M 8月  17 09:15 opcache.so*-rwxr-xr-x 1 root root 1.8M 8月  17 10:06 redis.so*

编辑 php.ini,添加 extension=redis

[root/usr/local/src/redis-4.1.1]# vim /usr/local/php7/lib/php.iniextension=redis

此时再使用php -m查看已安装的php扩展,redis已经在扩展列表中

[root/usr/local/src/redis-4.1.1]# php -m[PHP Modules]CorectypedatedomfileinfofilterhashiconvjsonlibxmlpcrePDOpdo_sqlitePharposixredisReflectionsessionSimpleXMLSPLsqlite3standardtokenizerxmlxmlreaderxmlwriter[Zend Modules]

3. 安装xdebug扩展实例

从 pecl.php.net 下载 xdebug-2.6.1 扩展,并解压缩

[root/usr/local/src]# wget https://pecl.php.net/get/xdebug-2.6.1.tgz[root/usr/local/src]# tar zxf xdebug-2.6.1.tgz[root/usr/local/src]# cd xdebug-2.6.1

在解压缩的扩展目录下执行phpize

[root/usr/local/src/xdebug-2.6.1]# /usr/local/php7/bin/phpizeConfiguring for:PHP Api Version:         20170718Zend Module Api No:      20170718Zend Extension Api No:   320170718

configure 配置编译参数

[root/usr/local/src/xdebug-2.6.1]# ./configure --with-php-config=/usr/local/php7/bin/php-config

编译安装

[root/usr/local/src/xdebug-2.6.1]# make && make install

查看编译好的扩展文件 redis.so,已经自动复制到php扩展目录下

[root/usr/local/src/xdebug-2.6.1]# ll /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/总用量 8.4M-rwxr-xr-x 1 root root 3.5M 8月  17 09:15 opcache.a*-rwxr-xr-x 1 root root 1.9M 8月  17 09:15 opcache.so*-rwxr-xr-x 1 root root 1.8M 8月  17 10:06 redis.so*-rwxr-xr-x 1 root root 1.3M 8月  17 11:16 xdebug.so*

编辑 php.ini,添加 zend_extension=xdebug

[root/usr/local/src/xdebug-2.6.1]# vim /usr/local/php7/lib/php.inizend_extension=xdebug

此时再使用php -m查看已安装的php扩展,xdebug已经在扩展列表中

[root/usr/local/src/xdebug-2.6.1]# php -m[PHP Modules]CorectypedatedomfileinfofilterhashiconvjsonlibxmlpcrePDOpdo_sqlitePharposixredisReflectionsessionSimpleXMLSPLsqlite3standardtokenizerxdebugxmlxmlreaderxmlwriter[Zend Modules]Xdebug

本文转载自:https://segmentfault.com/a/1190000016080151

更多编程相关内容,请关注编程入门栏目!

以上就是如何安装PHP7及其扩展?的详细内容,更多请关注其它相关文章!


  • 上一条:
    关于PHP的curl功能扩展基本用法
    下一条:
    关于PHP导出Excel的优化详解
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客