# PHP 8.0 源码编译安装 & JIT 尝鲜
# 准备
操作系统:MacOS 10.15.6
https://www.php.net/distributions/php-8.0.0.tar.gz (Current Stable PHP 8.0.0),2020-11-28
# 下载
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
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
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
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
2
3
4
5
# 启动FPM
/etc/init.d/php80-fpm start
Starting php-fpm done
1
2
2
# 验证FPM
ps aux | grep php80-fpm
1
# demo
test.php
<?php
echo "php hello";
phpinfo();
1
2
3
4
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
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
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
2
3
4
5
6
brew install oniguruma