# PHP 8.0 源码编译安装 & JIT 尝鲜

# 准备

# 下载

wget https://downloads.php.net/~pollita/php-8.0.0beta2.tar.gz
wget https://www.php.net/distributions/php-8.0.0.tar.gz
1
2

# 解压

tar -zxvf php-8.0.0beta2.tar.gz
1

# 安装目录

因为我本机已经安装了php7.3版本,为了考虑多个版本PHP版本并存,还是打算创建一个新的目录名称。

mkdir -p /usr/local/php80
1

# 配置选项

这是一个精简版配置选项,更加丰富的 PHP 配置选项说明:https://www.php.net/manual/en/configure.about.php

cd php-8.0.0beta2
./configure --prefix=/usr/local/php80 --with-config-file-path=/usr/local/php80/etc/ --with-config-file-scan-dir=/usr/local/php80/etc/php.d/ --enable-debug --enable-mbstring --enable-ftp --enable-gd  --enable-gd-jis-conv --enable-mysqlnd --enable-pdo --enable-sockets  --enable-fpm --with-fpm-user=www --with-fpm-group=www  --enable-xml --enable-soap  --enable-pcntl  --enable-cli --with-openssl  --with-mysqli=mysqlnd  --with-pdo-mysql=mysqlnd  --with-pear  --with-zlib --with-iconv --with-curl --with-mhash  --with-xsl --enable-exif
1
2

# 编译&安装

make && make install
1

# 验证

/usr/local/php80/bin/php -v
1

# 配置

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 
1
2
3
4
5
6

# 验证配置路径

验证自定义的配置项是否生效:--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)
1
2
3
4
5

# 启动FPM

/etc/init.d/php80-fpm start
Starting php-fpm  done
1
2

# 验证FPM

ps aux | grep php80-fpm
1

# demo

test.php

<?php
	
	echo "php hello";
	phpinfo();
1
2
3
4
/usr/local/php80/bin/php ./test.php
1

# 常见问题

# 1.libxml

configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met: 
No package 'libxml-2.0' found
1
2

安装libxml依赖即可,

brew install libxml2
1

# 2.iconv

PHP Configure Error: Please specify the install prefix of iconv with --with-iconv=<DIR>
1

先安装 brew install libiconv ,然后编译的时候加上 --with-iconv=$(brew --prefix libiconv)

# 3.sqlite3

configure: error: Package requirements (sqlite3 > 3.7.4) were not met:

No package 'sqlite3' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
1
2
3
4
5
6

安装brew install pkgconfig , brew install sqlite3 即可。

# 4.oniguruma

configure: error: Package requirements (oniguruma) were not met:

No package 'oniguruma' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
1
2
3
4
5
6

brew install oniguruma

# 参考资料