最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • PHP 8.0 源码编译安装以及 JIT 尝鲜

    奇技指南

    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

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

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

    13、总结

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

    推荐文章:《PHP8.0

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » PHP 8.0 源码编译安装以及 JIT 尝鲜
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情