0

0

PHP 8.0 源码编译安装以及 JIT 尝鲜

Guanhui

Guanhui

发布时间:2020-07-10 14:56:31

|

6276人浏览过

|

来源于csdn

转载

奇技指南

PHP 8.0 Alpha 1 已经在2020年6月25号发布了,今天给大家分享一篇最简化的 PHP 8 源码编译安装方法,快速尝鲜 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

    立即学习PHP免费学习笔记(深入)”;

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 这步已经成功啦。

viable
viable

基于GPT-4的AI非结构化数据分析平台

下载

PHP 8.0 源码编译安装以及 JIT 尝鲜

6、编译&安装

 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/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 Group
 Zend 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-fp
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 
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 8.0 源码编译安装以及 JIT 尝鲜

13、总结

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

推荐文章:《PHP8.0》

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

1649

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1091

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

986

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

948

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1396

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1227

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1438

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1302

2023.11.13

苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

10

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP8,究竟有啥野心..!?
PHP8,究竟有啥野心..!?

共4课时 | 0.5万人学习

php8,我来也
php8,我来也

共35课时 | 31.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号