女主宣言

今天小编为大家分享一篇最简化的 PHP 8 源码编译安装方法。PHP 8.0 Alpha 1 已经在2020年6月25号发布了,今天带领大家快速尝鲜 PHP 8.0 的新特性 JIT。希望能对大家有所帮助。

PS:丰富的一线技术、多元化的表现形式,尽在“360云计算”,点关注哦!

  • 操作系统:CentOS Linux release 7.4.1708 (Core)

  • GCC:4.8.5 20150623 (Red Hat 4.8.5-28)

  • PHP 版本:php-8.0.0alpha1

1

下载页面

https://downloads.php.net/~pollita/

2

下载 PHP 8.0

 $ wget https://downloads.php.net/~pollita/php-8.0.0alpha1.tar.gz

3

解压

$ tar -zxvf php-8.0.0alpha1.tar.gz

4

新建安装目录

由于本机有多个 PHP 版本并存,需要新建一个富有意义的目录,一个不假思索就能知晓 PHP 版本的目录名称。

$ mkdir -p /usr/local/php80

5

configure options

这是一个精简版配置选项,更加丰富的 PHP 配置选项说明:https://www.php.net/manual/en/configure.about.php

$ cd php-8.0.0alpha1
$ ./configure --prefix=/usr/local/php80/ --enable-debug --enable-fpm  --with-config-file-path=/usr/local/php80/etc/ --with-config-file-scandir=/usr/local/php80/etc/php.d/

若在 configure 过程中,遇到提示 configure: error,留意看下方的错误详细信息。以下 列出了在配置过程中出现的错误情况之关键信息摘要,未列举到的其它错误情况,解决方 法如出一辙:

Error #1:

configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met:
No package 'libxml-2.0' found

解决方法:

yum install libxml2-devel.x86_64

Error #2:

configure: error: Package requirements (sqlite3 > 3.7.4) were not met:
No package 'sqlite3' found

解决方法:

yum install sqlite-devel.x86_64

如果看到以下提示信息,说明 configure 这步已经成功啦。

6

编译&安装

$ make

make 阶段消耗的时间与机器配置有关哟,若看到以下信息,说明 make 阶段已经完成 了。

Build complete.
Don't forget to run 'make test'.

make test 由于是尝鲜,这步先省略了。

 $ make installexit 0;  -v -d /home/fanjiapeng/php-8.0.0alpha1/Zend/zend_ini_parser.y -o/home/fanjiapeng/php-8.0.0alpha1/Zend/zend_ini_parser.cInstalling shared extensions:     /usr/local/php80/lib/php/extensions/debugnon-zts-20190128/ Installing PHP CLI binary:        /usr/local/php80/bin/ Installing PHP CLI man page:      /usr/local/php80/php/man/man1/ Installing PHP FPM binary:        /usr/local/php80/sbin/ Installing PHP FPM defconfig:     /usr/local/php80/etc/ Installing PHP FPM man page:      /usr/local/php80/php/man/man8/ Installing PHP FPM status page:   /usr/local/php80/php/php/fpm/ Installing phpdbg binary:         /usr/local/php80/bin/ Installing phpdbg man page:       /usr/local/php80/php/man/man1/ Installing PHP CGI binary:        /usr/local/php80/bin/ Installing PHP CGI man page:      /usr/local/php80/php/man/man1/ Installing build environment:     /usr/local/php80/lib/php/build/ Installing header files:          /usr/local/php80/include/php/ Installing helper programs:       /usr/local/php80/bin/   program: phpize   program: php-config Installing man pages:             /usr/local/php80/php/man/man1/   page: phpize.1   page: php-config.1 /home/fanjiapeng/php-8.0.0alpha1/build/shtool install -c ext/phar/phar.phar /usr/local/php80/bin/phar.phar ln -s -f phar.phar /usr/local/php80/bin/phar Installing PDO headers:           /usr/local/php80/include/php/ext/pdo/

7

验证PHP

$ /usr/local/php80/bin/php -v PHP 8.0.0alpha1 (cli) (built: Jul  2 2020 15:47:26) ( NTS DEBUG )
Copyright (c) The PHP GroupZend Engine v4.0.0-dev, Copyright (c) Zend Technologies

8

环境配置

$ ln -s /usr/local/php80/bin/php /usr/bin/php80
$ cp php.ini-development /usr/local/php80/etc/php.ini
$ cp /usr/local/php80/etc/php-fpm.conf.default /usr/local/php80/etc/phpfpm.conf
$ cp /usr/local/php80/etc/php-fpm.d/www.conf.default /usr/local/php80/etc/php-fpm.d/www.conf
$ cp sapi/fpm/init.d.php-fpm /etc/init.d/php80-fpm
$ chmod +x /etc/init.d/php80-fpm

9

验证配置路径

验证自定义的配置项是否生效:--with-config-file-path,--with-config-file-scan-dir

$ php80 --ini
Configuration File (php.ini) Path: /usr/local/php80/etc/
Loaded Configuration File:         /usr/local/php80/etc/php.ini
Scan for additional .ini files in: /usr/local/php80/etc/php.d/
Additional .ini files parsed:      (none)

10

启动FPM

$ /etc/init.d/php80-fpm start
Starting php-fpm  done

11

验证FPM

$ ps aux | grep php-fpm
root     26876  0.0  0.0  52084  2828 ?        Ss   Jul02   0:14 php-fpm:
master process (/usr/local/php80/etc/php-fpm.conf)
nobody   26877  0.0  0.0  52084  3648 ?        S    Jul02   0:00 php-fpm:
pool www
nobody   26878  0.0  0.0  52084  3624 ?        S    Jul02   0:00 php-fpm: pool www
$ /etc/init.d/php80-fpm -h
Usage: /etc/init.d/php80-fpm {start|stop|forcequit|restart|reload|status|configtest}
$ /etc/init.d/php80-fpm status
php-fpm (pid 26876) is running...
$ /etc/init.d/php80-fpm configtest
[06-Jul-2020 11:06:42] NOTICE: configuration file /usr/local/php80/etc/php
fpm.conf test is successful

这里省略掉了 Nginx 配置详情,主要是为了快速测试安装的 PHP-FPM 模式是可用的。

// index.php
<?php
var_dump(PHP_VERSION);
var_dump(PHP_VERSION_ID);
$ curl localhost
string(11) "8.0.0alpha1"
int(80000)

12

尝鲜新特性JIT

机器配置:8核16G,SATA盘,操作系统:CentOS Linux release 7.4.1708 (Core)

Zend OPCache(/usr/local/php80/etc/php.ini)配置如下,[opcache] 配置项大部分都 有默认值,为了突显这些配置项的重要性还是列举了出来:

; 加载 Zend OPCache 扩展
zend_extension=opcache
; 启用 Zend OPCache
opcache.enable=1
; 启用 Zend OPCache,在 CLI 模式下
opcache.enable_cli=1; OPCache 共享内存存储大小,默认值 128 opcache.memory_consumption=128 ; interned string 内存大小,默认值 8 opcache.interned_strings_buffer=8 ; 缓存脚本文件数量的上限,默认值 10000 opcache.max_accelerated_files=10000
; 10秒检查一次文件的更新,默认值 2s
opcache.revalidate_freq=10
; 删除所有 PHPDoc 注释,默认值 1,表示保留注释
opcache.save_comments=0

这是一台资源空闲的虚拟机,重复多次开启 JIT、关闭 JIT 测试结果观察,结果值几乎无什 么变化。测试结果也没有特意去挑选其中一次最漂亮的数据,实际上也没这个必要。如下 图所示:

总结

这是一个通用性 PHP 源码编译安装方法,其它 PHP 版本编译安装方式类似,实际业务运 用中 configure options 要丰富的多,需要安装的类库也会更加全面。这篇文章中,测试 了 PHP 8 的新特性 JIT,依据 Zend/bench.php 测试结果看,还是让大家眼前一亮的。关 于 PHP 8 JIT 介绍,推荐 @Laruence《PHP8新特性JIT使用简介》。

360云计算

由360云平台团队打造的技术分享公众号,内容涉及数据库、大数据、微服务、容器、AIOps、IoT等众多技术领域,通过夯实的技术积累和丰富的一线实战经验,为你带来最有料的技术分享

PHP 8.0 源码编译安装 JIT 尝鲜相关推荐

  1. ambari 2.5.0源码编译安装

    参考:https://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/index.html Ambari 是什么 Ambar ...

  2. postgresql 12.0 源码编译安装

    postgresql 12.0 源码编译安装 1.安装相关软件包 su - root yum install -y cmake gcc gcc-c++ perl readline readline-d ...

  3. tesseract-4.0.0源码编译安装

    tesseract-4.0.0源码编译安装 安装开发工具 apt-get -y install gcc g++ make cmake autoconf automake libtool pkg-con ...

  4. python 3.10.0源码编译安装

    python 3.10.0源码编译安装 文章目录 python 3.10.0源码编译安装 1. 安装编译依赖工具 2. 下载python 3.10.0 3. 编译安装 Python 4. 体验 1. ...

  5. freebsd php 编译 mysql sql2005_[伊达原创]FreeBSD8.0源码编译安装MYSQL5 APACHE2.2 PHP5.3.2

    /********************************************** @desc:FreeBSD8.0+APACHE-2.2.15+MYSQL-5.1.45+PHP-5.3. ...

  6. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)...

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

  7. php 7.0 编译安装mysql_源码编译安装php7.0.5

    源码编译安装php7.0.5 源码包下载地址 安装epel扩展yum源 [root@xuegod63 ~]# yum clean all [root@xuegod63 ~]# yum list 注:R ...

  8. linux下源码安装vim,ubuntu 源码编译安装最新的vim 8.0

    为什么要源码编译安装VIM? 因为我要安装ycm,但是ubuntu14.04仓库vim版本低 教程步骤: 1, 核对系统版本 2, 删除系统自带的vim 3, 编译安装vim 4, 检验vim的安装 ...

  9. opencv4.0在linux下编译,Ubuntu 18.04源码编译安装OpenCV 4.0步骤

    Ubuntu 18.04下标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 108 ...

最新文章

  1. 服务器平均响应时长计算,并发数 = QPS*平均响应时间
  2. 五分钟了解机器学习十大算法
  3. python什么时候用框架_python时间模块的使用
  4. 计算机usb共享网络泄密,杜绝USB泄密 MyUSBOnly
  5. Silverlight入门:第七部分 - 脱离浏览器的经验
  6. Hibernate ,Mybatis 区别,以及各自的一级,二级缓存理解
  7. 008.一个简单的网络服务器开发----回声服务器
  8. c++ 类的定义和使用
  9. Cordova--打包问题
  10. 80端口被system占用解决过程
  11. MATLAB篇之层次分析法
  12. 推荐16个超棒的国外免费PSD资源素材网站
  13. IEEE 2021年新增Fellow出炉,70余位华人入选
  14. 对接亚马逊 SP-API(Amazon Selling Partner API) 第五章:Reports 模块
  15. python程序实现分析_Python编程快速上手——疯狂填词程序实现方法分析
  16. 51ditu、清华地图以及Google地图
  17. 网络游戏(MMORPG) 好玩的原因
  18. php scws自定义词库,scws分词 自定义词库的方法
  19. 高中关于人工智能方面的课题_人工智能课题及其认识意义.doc
  20. 快看你的达标没!充电宝新国标只有这20家合格

热门文章

  1. 像狗皮膏药一样的图片拖拉操作
  2. 寻找公共链表起始位置
  3. Hbase集群安装Version1.1.5
  4. Spring,SpringMvc初始化监听配置
  5. 制作一个状态栏中跑马灯效果_图标设计指南(3)——制作一个图标集所需全部信息(中)...
  6. mysql 实例复制_MySQL 复制详解及简单实例
  7. 阿里巴巴获评《福布斯》全球最有投资价值公司
  8. 按键精灵saystring无法使用的几种解决方案
  9. python 闭包中引用的变量值变更问题
  10. java.lang.IncompatibleClassChangeError: