PHP 8.0 于 2020 年 11 月 26 日正式发布,包含了很多新功能与优化项, 包括命名参数、联合类型、注解、构造器属性提升、match 表达式、nullsafe 运算符、JIT,并改进了类型系统、错误处理、语法一致性。
更多特性可以在 PHP: PHP8.0 Release 中查看
Contents
相关文章
更新系统
更新系统软件包至最新版本
yum update
下载 PHP 源码包
从 PHP:Downloads 下载最新 PHP 源码包
wget https://www.php.net/distributions/php-8.0.0.tar.gz
tar -xvzf php-8.0.0.tar.gz
cd php-8.0.0
安装编译组件
安装编译组件 make
和 gcc
和 g++
yum install gcc gcc-c++ make
安装依赖组件
yum install libxml2 libxml2-devel openssl openssl-devel freetype freetype-devel libzip libzip-devel sqlite sqlite-devel gd gd-devel libcurl-devel libicu libicu-devel libxslt libxslt-devel
oniguruma 安装可以参照此前的博文 编译安装 php 7.4 no package ‘oniguruma’ found
yum install https://rpms.remirepo.net/enterprise/8/remi/x86_64/oniguruma5php-6.9.6-1.el8.remi.x86_64.rpm
yum install https://rpms.remirepo.net/enterprise/8/remi/x86_64/oniguruma5php-devel-6.9.6-1.el8.remi.x86_64.rpm
编译
使用 configure
自动配置
./configure \
--prefix=/usr/local/php \
--with-zlib-dir \
--enable-mbstring \
--enable-soap \
--enable-calendar \
--with-curl \
--disable-rpath \
--enable-gd \
--enable-gd-jis-conv \
--with-bz2 \
--with-zlib \
--enable-sockets \
--enable-sysvsem \
--enable-sysvshm \
--enable-pcntl \
--enable-mbregex \
--enable-exif \
--enable-bcmath \
--with-mhash \
--with-pdo-mysql \
--with-mysqli \
--with-openssl \
--with-fpm-user=www \
--with-fpm-group=www \
--with-libdir=/lib/x86_64-linux-gnu/ \
--enable-ftp \
--with-gettext \
--with-xsl \
--enable-opcache \
--enable-fpm \
--with-iconv \
--with-zip \
--with-pear \
--with-freetype \
--enable-intl
使用 make
编译
make -j4
-j4
表示四线程编译,推荐设置为 CPU 核心数
使用 make
安装
make install
cp php.ini-production /usr/local/php/lib/php.ini
配置 PHP
PHP 安装位置在 /usr/local/php
目录下
创建 www 用户
useradd www
修改 php-fpm.conf
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
cd php-fpm.d
cp www.conf.default www.conf
编辑 www.conf,根据服务器性能和需求配置进程数量
pm.max_children = 10
pm.start_servers = 5
pm.min_spare_servers = 4
pm.max_spare_servers = 7
并将下列代码前分号去除
;env[HOSTNAME] = $HOSTNAME
;env[PATH] = /usr/local/bin:/usr/bin:/bin
;env[TMP] = /tmp
;env[TMPDIR] = /tmp
;env[TEMP] = /tmp
修改 php.ini
cd /usr/local/php/lib
vim php.ini
编辑内存大小
memory_limit = 512M
编辑 POST 和文件上传大小
post_max_size = 512M
upload_max_filesize = 512M
启用 OPcache 和 JIT
去除下列代码前分号
;zend_extension=opcache
[opcache]
;opcache.enable=1
;opcache.memory_consumption=128
;opcache.interned_strings_buffer=8
;opcache.max_accelerated_files=10000
;opcache.validate_timestamps=1
并输入
opcache.jit_buffer_size=128
注册 php-fpm 为系统服务
vim /usr/lib/systemd/system/php-fpm.service
填入
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize --fpm-config /usr/local/php/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
设置开机自动启动
systemctl enable php-fpm
systemctl start php-fpm
查看服务运行状态
systemctl status php-fpm