1.服务器,这里我使用的是阿里云的ECS服务器,安装的操作系统为 CenterOs7.4。
2.细心、耐心。
groupadd www
useradd -g www www
使用wget将 PHP官方网站 上的最新原码包下载至服务器并解压
wget "https://downloads.php.net/~cmb/php-7.3.2.tar.gz"
tar xzvf php-7.3.2.tar.gz
cd php-7.3.2
注意编译配置中的用户组和用户设置,如果你的用户组和用户不是“www”,请自行替换。
–with-fpm-user=www --with-fpm-group=www
在解压后的php原码包下执行如下编译配置,也可以执行 ./configure -help 查看编译选项说明
./configure --prefix=/usr/local/php --with-fpm-user=www --with-fpm-group=www --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip --enable-fpm
执行过程可能会出现多次error报错,大部分可能是依赖缺失,那我们就缺什么补什么,直到编译成功,下面列出一些常见的问题供大家参考。
libxml2 报错
configure: error: libxml2 not found. Please check your libxml2 installation.
yum install -y libxml2-devel
OpenSSL
configure: error: Cannot find OpenSSL’s
yum install -y openssl openssl-devel
如果你已经安装 OpenSSL 可能是编译配置中的路径与你的OpenSSL安装路径不匹配,改成自己的再次编译
BZip2
configure: error: Please reinstall the BZip2 distribution
yum install -y bzip2-devel
cURL
checking for cURL 7.15.5 or greater… configure: error: cURL version 7.15.5 or later is required to compile php with cURL support
yum install -y curl-devel
jpeglib
configure: error: jpeglib.h not found.
rpm -qa | grep libjpeg
yum install -y jpeglib-devel
png
configure: error: png.h not found.
yum install -y libpng-devel
freetype
configure: error: freetype-config not found.
yum install -y freetype-devel
xslt
configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
yum install -y libxslt-devel
libzip
configure: error: Please reinstall the libzip distribution
yum install -y libzip-devel
libzip
checking for libzip… configure: error: system libzip must be upgraded to version >= 0.11
这是由于yum安装的libzip版本过低,那就需要卸载后手动安装最新libzip,操作步骤如下
#卸载刚才安装的低版本 libzip
yum remove -y libzip
#来到你下载源码包的文件夹,我的是 /home/lnmp
cd /home/lnmp
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make && make install
#安装完成后记得回到php7.3源码包,继续编译
off_t
configure: error: off_t undefined; check your library configuration
该问题常见于centeros 64位系统中
这是因为默认情况下 centos 的动态链接库配置文件/etc/ld.so.conf里并没有加入搜索路径,这个时候需要将 /usr/local/lib64 /usr/lib64 这些针对64位的库文件路径加进去。
#添加搜索路径到配置文件
vim /etc/ld.so.conf
如图,将四个路径放到文件内容最后
/usr/local/lib64
/usr/local/lib
/usr/lib
/usr/lib64
ldconfig -v
make && make install
zipconf 错误
configure: error: Please reinstall the libzip distribution/usr/local/include/zip.h:59:21: fatal error: zipconf.h: No such file or directory
cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h
再次运行
make && make install
从原码包中将默认ini的配置文件复制到相应的路径中
ini配置文件有两个,php.ini-development(开发环境推荐使用),php.ini-production(生产环境推荐使用)
这是官方预设的两种环境下的推荐配置,我这里使用的是 php.ini-development,复制并改名为 php.ini
cp php.ini-development /usr/local/php/lib/php.ini
复制 php-fpm.conf 配置文件
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
添加软连接
ln -s /usr/local/php/sbin/php-fpm /usr/local/bin
配置www.conf
cd /usr/local/php/etc/php-fpm.d
vim www.conf
输入如下内容,注意用户组和用户:
[www]
listen = 127.0.0.1:9080
listen.mode = 0666
user = www
group = www
pm = dynamic
pm.max_children = 128
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 10000
rlimit_files = 1024
slowlog = log/$pool.log.slow
将 php-fpm.service 加入 systemctl 服务
#进入PHP源码包目录
cd [替换成你自己的路径]/php-7.3.2/sapi/fpm
#复制文件
cp php-fpm.service /usr/lib/systemd/system/
验证安装结果
#启动
systemctl start php-fpm
#查看运行状态
systemctl status php-fpm