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 這步已經成功啦。
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 測試結果觀察,結果值幾乎無甚 麼變化。測試結果也沒有特意去挑選其中一次最漂亮的資料,實際上也沒這個必要。如下 圖所示:
13、總結
這是一個通用性 PHP 原始碼編譯安裝方法,其它 PHP 版本編譯安裝方式類似,實際業務運 用中 configure options 要豐富的多,需要安裝的類庫也會更加全面。這篇文章中,測試 了 PHP 8 的新特性 JIT,依據 Zend/bench.php 測試結果看,還是讓大家眼前一亮的。關 於 PHP 8 JIT 介紹,推薦《PHP8新特性JIT使用簡介》。
推薦文章:《PHP8.0》
以上就是PHP 8.0 原始碼編譯安裝以及 JIT 嘗鮮的詳細內容,更多請關注TW511.COM其它相關文章!