前言
环境:ubuntu18 && PHP-8.0.18
PHP-8.0.18 下载链接
编译步骤
解压,
./buildconf --force
编译选项如下
./configure --prefix=/usr/local/php8 \
--with-config-file-path=/usr/local/php8/etc \
--with-iconv=/usr/local/libiconv \
--enable-opcache \
--enable-pdo \
--enable-mysqlnd \
--with-mysqli \
--with-pdo-mysql \
--enable-fpm \
--with-fpm-user=nginx \
--with-fpm-group=nginx \
--with-zlib \
--enable-xml \
--enable-shmop \
--enable-sysvsem \
--enable-mbregex \
--enable-mbstring \
--enable-ftp \
--enable-pcntl \
--enable-sockets \
--enable-soap \
--without-pear \
--with-gettext \
--enable-session \
--with-curl \
--enable-exif
然后
make -j $(nproc)
最后
sudo make install
Debug
编译过程中日常遇到问题
Bug1: configure: error: iconv does not support errno
解决方案如下
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
./configure --prefix=/usr/local/libiconv
make && make install
注意这里的安装路径其实跟上面编译选项中的--with-iconv
需要一致
Bug2: No package ‘oniguruma’ found
解决方案如下
sudo apt install libonig-dev
Bug3: 找不到php.ini
这个在编译安装PHP7的时候也说过这个问题
进入到PHP8源代码目录
sudo cp ./php.ini-development -t /usr/local/php8/etc/
sudo mv /usr/local/php8/etc/php.ini-development /usr/local/php8/etc/php.ini
Bug4: No package ‘sqlite3’ found
sudo apt install libsqlite3-dev
Bug5: No package ‘oniguruma’ found
git clone https://github.com/kkos/oniguruma.git oniguruma
cd oniguruma
./autogen.sh
./configure
make && sudo make install
其他需求
需求1: PHP8和PHP7共存
使用ln
给PHP8的cli做一下软链接
需求2:多PHP环境下的插件编译
编译时指定下php-config版本
./configure --with-php-config=php-config8
需求3:开opcache
php.ini修改一下
[opcache]
zend_extension=opcache
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=10
opcache.save_comments=1