php 源码编译安装,PHP 8.0 源码编译安装 & JIT 尝鲜

简述PHP 8.0 Alpha 1 已经在2020年6月25号发布了,今天给大家分享一篇最简化的 PHP 8 源码编译安装方法,快速尝鲜 PHP 8.0 的新特性 JIT。这是一个通用性 PHP 源码编译安装方法,其它 PHP 版本编译安装方式类似。

PHP 8.0 源码编译安装 & JIT 尝鲜

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

GCC:4.8.5 20150623 (Red Hat 4.8.5-28)

PHP 版本:php-8.0.0alpha1

1. 下载页面

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

4. configure options$ 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-scan-dir=/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 这步已经成功了哟 ^_^。

bVbKA52

5. 编译&安装$ make

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

Don't forget to run 'make test'.

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

exit 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.c

Installing shared extensions: /usr/local/php80/lib/php/extensions/debug-non-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/

6. 验证 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 Group

Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies

7. 环境配置$ 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/php-fpm.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

8. 验证配置路径

验证自定义的配置项是否生效:--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)

9. 启动 FPM$ /etc/init.d/php80-fpm start

Starting php-fpm done

10. 验证 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|force-quit|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

var_dump(PHP_VERSION);

var_dump(PHP_VERSION_ID);$ curl localhost

string(11) "8.0.0alpha1"

int(80000)

11. 尝鲜新特性 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 测试结果观察,结果值几乎无什么变化。测试结果也没有特意去挑选其中一次最漂亮的数据,实际上也没这个必要。如下图所示:

bVbKA5T

12. 总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值