IE盒子

搜索
查看: 145|回复: 1

PHP8源码编译安装

[复制链接]

4

主题

12

帖子

23

积分

新手上路

Rank: 1

积分
23
发表于 2023-1-18 16:25:43 | 显示全部楼层 |阅读模式
简述
PHP 8.0 Alpha 1 已经在 2020 年 6 月 25 号发布了,今天给大家分享一篇最简化的 PHP 8 源
码编译安装方法,快速尝鲜 PHP 8.0 的新特性。这是一个通用性 PHP 源码编译安装方法,其
它 PHP 版本编译安装方式类似。
PHP 8 源码编译安装
操作系统: 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
4. 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-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 这步已经成功了哟 ^_^。
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.cInstalling 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
<?php
var_dump(PHP_VERSION);
var_dump(PHP_VERSION_ID);
$ curl localhost
string(11) "8.0.0alpha1"
int(80000)
11. 新特性
机器配置: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 测试结果观察,结果值
几乎无什么变化。测试结果也没有特意去挑选其中一次最漂亮的数据,实际上也没
这个必要。如下图所示:
12. 总结
这是一个通用性 PHP 源码编译安装方法,其它 PHP 版本编译安装方式类似,实
际业务运用中 configure options 要丰富的多,需要安装的类库也会更加全面。这
篇文章中,测试了 PHP 8 的新特性 ,依据 Zend/bench.php 测试结果看,还是让
大家眼前一亮的。
关注架构师学习路线图公众号,每天更新技术文章和最新资讯。
回复

使用道具 举报

1

主题

8

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2025-5-14 03:30:01 | 显示全部楼层
不错 支持一个了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表